您的位置:首页 > 其它

mybatis 学习笔记

2012-04-13 16:26 281 查看
小小接触了下 mybatis,没有和其它框架集成,单独使用了下,感觉还是蛮强大的,学习曲线也比较低。因为文档也比较丰富吧,所以遇到问题也很容易解决。

一、mybatis基本介绍:三类二文件

三类:

SqlSessionFactoryBuilder 用于创建 SqlSessionFactory ,在方法体或类到处实例化使用

SqlSessionFactory 用于创建SqlSession ,属于重量级组件,生命周期是整个应用,所以应该只创建一次

SqlSession 用于数据库操作实例,每个线程应该有单独的SqlSession实例,线程不安全,使用后及时关闭,回收资源

二文件:

配置文件:配置数据源信息 和 数据库优化配置等信息

映射文件:可读性和可拓展性需要,针对不同数据表对象操作有一个映射文件,存放各种数据库操作SQL语句

二、mybatis强大处

① 结果映射

经常有业务需求,进行多表查询,这样单纯的OM就不能满足需求,mybatis提供resultMap查询结果类型,按照下面配置结构,在select语句中配置resultMap="userResultMap",则可以得到实例对象。

<resultMap id="userResultMap" type="User">

<id property="id" column="user_id" />

<result property="username" column="user_name"/>

<result property="password" column="hashed_password"/>

</resultMap>

②动态SQL

当进行条件查询时,有时业务需求为这样,当一个指定查询条件为空,则查询全部信息,不为空,这查询该条件下的结果,针对这种情况,mybatis提供了强大的动态SQL,可以在SQL文中,嵌入像IF,CHOOSE,WHEN等判断语句:此时注意,查询参数类型 《1》参数类型为映射对象时,判断条件应该为对应的属性,这个可以很好理解。《2》参数类型为普通数据类型时,则应该使用map类型传入(其它方式还没有用成功过),以key-value形式传入,这样key为判断条件,同事赋值也应该以key处理,举例说明:

有如下操作需要:

Map<String, String> map = new HashMap<String, String>();

map.put("aaa","%test%");

List<UserInfo> list = dao.query(map);

则在映射文件中为

<select id="query" parameterType="map" resultMap="userInfoMap">

<if test="aaa != null">and a.UserName like #{aaa}</if>

</select>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: