Java--MyBatis 增加数据及获取刚刚插入数据的自增ID 更新 删除

1.增加

Mapper:

    <!-- 这里的参数类型 为BuMen类 -->    
    <insert id = "insertBuMen" parameterType="BuMen">
        INSERT INTO tbInfoDept ( InnerCode, DeptName )
        VALUES  (#{innerCode},#{deptName} )
    </insert>

接口:增删改 默认返回受影响的记录行数

int insertBuMen(BuMen buMen);

测试:注意要 commit() 否则 存不到数据库中  

    @Test
    public void insertBuMen(){
        
        SqlSession session = BuMenUtil.getSqlSession();
        BuMenMapper buMenMapper = session.getMapper(BuMenMapper.class);
        BuMen buMen = new BuMen("001","Test组");    
        int icount = buMenMapper.insertBuMen(buMen);
        session.commit();
        session.close();
        System.out.println(icount);        
        System.out.println(buMen);
    }

注意:这里打印处理的结果中 ID为null

2、获取自增ID

方法一:在 Mapper 中 insert标签中 增加 useGeneratedKeys="true" keyProperty = "id" 节点

    <!-- 这里的参数类型 为BuMen类 -->    
    <insert id = "insertBuMen" parameterType="BuMen" useGeneratedKeys="true" keyProperty = "id">
        INSERT INTO tbInfoDept ( InnerCode, DeptName )
        VALUES  (#{innerCode},#{deptName} )
    </insert>

方法二:在全局配置文件中 配置Settings选项  这种还需要在 insert 标签中 再定义 keyProperty  所以 此方法不推荐

    <settings>
        <setting name = "useGeneratedKeys" value = "true"/>
    </settings>

 3、更新

Mapper:

    <update id = "updateBuMen" parameterType="BuMen" >
      Update tbInfoDept Set InnerCode = #{innerCode},
                            DeptName  = #{deptName}
      where id = #{id}                           
    </update>

接口:

int updateBuMen(BuMen buMen);

测试:

    @Test
    public void updateBuMen(){
        
        SqlSession session = BuMenUtil.getSqlSession();
        BuMenMapper buMenMapper = session.getMapper(BuMenMapper.class);
        BuMen buMen = new BuMen();
        buMen.setId(20);
        buMen.setDeptName("技术部");
        buMen.setInnerCode("003");
        
        int icount = buMenMapper.updateBuMen(buMen);
        session.commit();
        session.close();
        System.out.println(icount);        
        System.out.println(buMen);
    }

部分更新:如果没有为对象设置所有的要修改的属性,那么未设置的属性会用成员变量的默认值填充

解决方法:

  • 1.先查询再更新

Mapper:

    <update id = "updateBuMen" parameterType="BuMen" >
      Update tbInfoDept Set InnerCode = #{innerCode},
                            DeptName  = #{deptName}
      where id = #{id}                           
    </update>

接口:

int updateBuMen(BuMen buMen);

测试:

@Test
    public void updateBuMen(){
        
        SqlSession session = BuMenUtil.getSqlSession();
        BuMenMapper buMenMapper = session.getMapper(BuMenMapper.class);
        BuMen buMen = buMenMapper.selectBuMen(20);
        buMen.setId(20);
        buMen.setDeptName("技术部01");

        int icount = buMenMapper.updateBuMen(buMen);
        session.commit();
        session.close();
        System.out.println(buMen);
        System.out.println("修改了"+icount+"行记录!");    
    }
  • 2.动态SQL 

4、删除

Mapper:

    <delete id ="deleteBuMen" parameterType ="int">
      Delete from tbInfoDept where id = #{id}
    </delete>

接口:

    int deleteBuMen(int id);

测试:

    @Test
    public void deleteBuMen(){
        SqlSession session = BuMenUtil.getSqlSession();
        BuMenMapper buMenMapper = session.getMapper(BuMenMapper.class);
        int icount = buMenMapper.deleteBuMen(35);
        session.commit();
        session.close();
        System.out.println("删除了"+icount+"行记录!");            
    }

批量删除使用动态sql实现

posted @ 2022-01-24 15:17  改Bug的小魔女  阅读(702)  评论(0编辑  收藏  举报