2 . Mybatis — 增-删-改

 数据库是 test,表是user,,Bean那些已经准备好 自己去get and  set 和 toString 等..

1、导入gav

2、编写配置文件(核心配置 和 映射配置)

 我们学了最基础的 查询。现在操作 增加操作:

核心配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="crud">
    <!--插入 那就是插入标签 parameterType 表示那个对象是占位符数据的来源对象-->
    <insert id="insertDemo" parameterType="com.bihu.Bean.User">
        <!-- 下面这条是语句 其中不是用? 作占位符,是用#{} 花括号内写入占位符数据来源对象的字段即可-->
       insert into user values(#{id},#{username},#{password})
   </insert>
</mapper>
映射配置文件

映射配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="crud">
    <!--插入 那就是插入标签 parameterType 表示那个对象是占位符数据的来源对象-->
    <insert id="insertDemo" parameterType="com.bihu.Bean.User">
        <!-- 下面这条是语句 其中不是用? 作占位符,是用#{} 花括号内写入占位符数据来源对象的字段即可-->
       insert into user values(#{id},#{username},#{password})
   </insert>
</mapper>
映射配置文件

3.编写测试类

import com.bihu.Bean.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;


public class MybatisTest {

    @Test
    public void db_show() throws IOException {

        //因为插入操作数据对象是 冲 前端->Controller->Service->DAO层   所以这里模拟下DAO层
        User user = new User();
        user.setId(10088);
        user.setUsername("BiHu");
        user.setPassword("123456");

        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //因为是插入操作 所以这里是 insert方法,第二个参数是 占位符数据源
        sqlSession.insert("crud.insertDemo",user);
        //因为我们是更新操作 所以要提交事务 ,查询不需要
        sqlSession.commit();
        sqlSession.close();
    }



}
插入数据 - 测试类

4.查看数据库

插入操作完事!


更改操作:【其实也可以单条件和多条件 看你喜欢】

核心配置文件不用改 用最上面那个一样的。。。。

映射文件:

<?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

    <mapper namespace="crud">
        <!--更新 那就是update标签 parameterType 表示那个对象是占位符数据的来源对象-->
       <update id="updateTest" parameterType="com.bihu.Bean.User">
           update user set username = #{username},password = #{password} where id = #{id}
       </update>
    </mapper>
映射文件

测试文件:

import com.bihu.Bean.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;


public class MybatisTest {

    @Test
    public void db_show() throws IOException {

        //因为更新操作数据对象是 从 前端->Controller->Service->DAO层   所以这里模拟下DAO层
        User user = new User();
        user.setId(10088);
        user.setUsername("LZ");
        user.setPassword("654321");

        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //因为是插入操作 所以这里是 update方法,第二个参数是 占位符数据源
        sqlSession.update("crud.updateTest",user);
        //因为我们是更新操作 所以要提交事务 ,查询不需要
        sqlSession.commit();
        sqlSession.close();
    }



}
测试文件

 完事!


删除操作  更新和删除都存在条件,分 单条件(一个条件)  和 多条件(多个条件判断),这样 映射文件中的占位符就会有两种写法:

单条件删除:

核心配置文件不变 依照最上面那个来写:

映射文件:

<?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

    <mapper namespace="crud">
        <!--删除操作 那就是delete标签 parameterType 表示那个对象是占位符数据的来源对象-->
        <!--因为这是单条件写法 下面的parameterType是Integer型的 占位符中写什么都可以 但一定的是Integer型的-->
       <delete id="deleteTest" parameterType="java.lang.Integer">
            delete from user where id = #{random}
        </delete>
    </mapper>
映射配置文件

测试类:

import com.bihu.Bean.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;


public class MybatisTest {

    @Test
    public void db_show() throws IOException {

        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //因为是删除操作 所以这里是 delete方法,第二个参数是 占位符数据源
        sqlSession.delete("crud.deleteTest",10088);
        //因为我们是更新操作 所以要提交事务 ,查询不需要
        sqlSession.commit();
        sqlSession.close();
    }



}
测试类

 ID为10088 的 LZ就被删除了

所以这里要注意的就是   parameterType 。

多条件删除

映射文件:

<?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

    <mapper namespace="crud">
        <!--删除操作 那就是delete标签 parameterType 表示那个对象是占位符数据的来源对象-->
       <delete id="deleteTest" parameterType="com.bihu.Bean.User">
            delete from user where id = #{id} and username = #{username}
        </delete>
    </mapper>
映射文件

测试类:

import com.bihu.Bean.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;


public class MybatisTest {

    @Test
    public void db_show() throws IOException {

        //模拟数据来源
        User user = new User();
        user.setId(3);
        user.setUsername("qq333");
        user.setPassword("565de98");

        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //因为是删除操作 所以这里是 delete方法,第二个参数是 占位符数据源
        sqlSession.delete("crud.deleteTest",user);
        //因为我们是更新操作 所以要提交事务 ,查询不需要
        sqlSession.commit();
        sqlSession.close();
    }



}
测试类

 qq333就没了...这是 ID +  usename 的删除操作。

 

本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/15122211.html

原文地址:https://www.cnblogs.com/bi-hu/p/15122211.html