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实现
输出是最好的输入。把学习的内容输出出来,加深记忆;