Mybatis是一个好用的持久成框架,他的使用也并不复杂,但是对于没有实际项目经验的小白,遇到问题如何在项目中实际的使用学到的知识就是一个应该注意的问题了,而Mybatis实际使用这一系列的文章,也正是专门记录自己在这方面的一个收获。
使用Mybatis的foreach标签实现in条件的批量加入:
@Override
public void deleteDetailByids(List<Long> ids) {
super.update("deleteSaleOrderDetailByids", ids);
}
<select id="deleteDetailByids" parameterType="java.lang.Long">
update cpu_r_detail set dr = 1,ts = CURRENT_TIMESTAMP where dr = 0 and id in
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item,jdbcType=BIGINT}
</foreach>
</select>
在上面的Java代码中我们可以看到他调用了一个super.update()的方法,这是项目中从SqlSession工厂层次进行分装,从而提供一个平台的查询能力。不论是我们通过xml还是注解来使用Mybatis有一个关键的部分就是将我们的sql语句与我们的dao层接口绑定起来,xml的使用方式是通过标签属性的值来告诉框架他们两者是应该如何绑定的。注解的形式是框架自己提供的这个能力,但是显而易见我们的注解就作用域我们的dao层接口上,sql语句就在注解属性中,通过这样的方式实际上我们就业已经告诉了框架他们之间的一个关系。
protected int update(String statement, Object entity) {
return this.getSqlSession().update(this.addNameSpace(statement), entity);
}
项目自己分装的这种方式一个关键的点就也是如何将这两者关联起来,在这里它采用的是自定义的注解以及方法参数传递两种方式结合来达到这一目标。日后有机会的对这一机制做一个简单的实现。