在最近的项目中,由于目录结构的调整,讲xml文件去掉,使用全注解的方式来进行开发,记录一下自己的学习。
1》在dao层接口上,之前只有spring对数据访问组件(DAO)的注解,@Repository注解,但是现在需要@Mapper这个注解,MyBatis的注解形式提供@Select()、@Insert、@Update和@Delete 这四个基本的注解,用于对数据库简单的操作。
2》在条件查询并分页的时候,需要用到动态sql语句,并且在记录总数 Count 和每页内容List的时候,写上两遍比较麻烦,可读性比较差,所以将动态sql语句提出之后,需要引入<script></script>将整条sql语句包裹起来。
3》注解方式依旧需要手动映射,将数据库字段和实体类对象对应起来(可以只对应字段不一致的部分,此外MySQL数据库不区分大小写,所以需要使用下划线:_ 来区分开单词,然而_是不符合Java命名规范的,Java需要使用驼峰命名法来区别单词),所以使用到:
@Select("select * from plan where p_id=#{pId} order by id desc ") @Results(id="resultMap",value={ @Result(property = "pId",column = "p_id"), @Result(property = "updateTime",column = "update_time") }) List<Plan> getPlan(@Param("pId")Integer pId);
在其它地方使用到时需要引入,也就是在sql语句下引入即可:
@ResultMap("resultMap")
还有一个值得注意的地方:@Results 不可以单独存在,必须存在于一个查询语句的下面,否则将没有任何作用。
4》当然虽然有了这几种方法,但是在新增@Insert,或者修改@Update的时候,因为发送的数据不确定,如果使用动态语句,代码可读性很差,所以有@InsertProvider,@DeleteProvider@UpdateProvider,和@SelectProvider这几种注解,由于参加工作时间较短,自己还没有高深的功力封装方法,具体使请参考:https://blog.csdn.net/coder_zyz/article/details/78997328