`
橙臣1314
  • 浏览: 6319 次
社区版块
存档分类
最新评论

集成Mybatis

阅读更多
Mybatis 替代之前的hibernate,选取了hibernate的一些优点,不过砍掉了一对多和多对一等映射特点。按照官方文档的介绍:
引用
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

我在startSpring工程中暂时没使用懒加载,在开始的集成过程中,都是在daoimp中自己调用startmentId,不过随即发现当mapper.xml的namespace映射到相同dao接口类上时,会自动实例化dao的bean,于是修改namespace,删除daoImp,使用一个Interface basedao,让普通类的dao继承该接口成为超接口,这样避免重复写接口。
在构建动态SQL的过程中,由于很难避免表之间字段重名,所以都是在resultMap中使用assication的select进行进一步查询,而查询条件上,使用include,这样也解决了字段名重复的问题。查询条件会涉及大部分字段,但是删除和更新的条件,大多会根据key ID来进行更新和删除,同时查询会做分页和排序处理,但是删除更新不会,于是queryConditions和deleteConditions分开。
对于新增和更新操作,传入参数被设置为map或是list,主要是为了进行批量更新和批量新增,并能容纳部分字段更新操作,比如条件使用where $key=#{value}。参数上的事,如果传入的是int类型,那么即使写
parameterType="java.util.Map"
也不会影响取值,不过,如果传入int但是写以下代码
<if test="id != null">and memberid=#{memberid,javeType=INTEGER}</if>
会在判断过程中出错,显示integer中没有memberid,这也是我没有想清楚的一点
。<foreach collection="list" item="item" index="index" separator=",">
是批量操作使用的重要一部分。
github: http://github.com/leechedan/startSpring/mybatis
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics