一、何为mybatis框架
1.框架:
网上有各种各样的对框架的定义认识等,个人总结为:将各种有固定操作冗余度高的代码以优秀的设计模式封装、解耦,达到通用,高效开发的目的。
2.Mybatis框架:
mybatis是一个基于java的持久层框架,主要用来做数据访问操作。其底层封装了JDBC,同时进行了解耦和,在项目中可以大大的提高开发效率,使用非常方便。
和JDBC相比,有以下优势:
- 代码冗余度低,开发效率高。
- sql命令在配置文件中书写,代码灵活性大大提高。
- 轻量级,可以自动完成O-R mapping的动作
- 等等
二、mybatis体系结构
1.提供一个映射文件(mapper)向mybatis提出功能要求
通过mapper文件完成功能(.XML)
<mapper namespace=”包名.类名”>
<insert id=”将要实现接口中的方法名”>
insert into 表名 values(.....)
</insert>
<select id=”将要实现接口中的方法名”>
select * from.....
</select>
<update id=”将要实现接口中的方法名”>
</update>
</mapper>
2.mybatis根据给定的mapper文件自动生成相应的java实现类
3.mybatis核心类
SqlSessionFactoryBuilder : 负责加载mybatis-config.xm文件内容
SqlSessionFactory:负责构建SqlSession
SqlSession : 一次数据库会话,包含了多次数据库访问操作,相当于jdbc中的connection
4.配置文件模板:
详见http://blog.csdn.net/edwinbalance/article/details/75860872此篇文章(亲测可用)
三、搭建环境
1.引入jar包:
mybatis-3.2.2.jar(mybatisjar包)、对应数据库所对应jar包、log4j-1.2.17.jar(打印日志)
2.为mybatis设置运行环境(通过配置文件)
将mybatis-config.xml和log4j-1.2.17.jar文件放在src目录下
四、应用
1.新建表和实体类
2.定义dao接口
3.通过配置文件实现dao接口(…)
4.将配置文件配置到mybatis-config.xml中()
5.编写测试类
4.1查询
select 字段名 as 结果字段名,……frmo 表名 where 条件
注:mybatis会自动将结果集中的数据封装成指定返回类型的对象。封装时,将结果集里的字段值设置到对象的相应属性中,要求字段名和属性名相同,否则会报错。
五、ORM
5.1 resultMap
自定义mybetis查询结果集和实体的映射关系
如果实体对象和关系属性的关系是 has one —>
<resultMap id=”” type=”所用映射的实体的全类名”>
<id property=”实体的属性名” column=”结果集属性列”/>
<result property=”” column=”” />
<association property=”实体名” javaType=”实体全限定名”>
<id property=”” column=””/>
<result property=”” column=”” />
</association>
</resultMap>
如果实体对象和关系属性的关系是 has manny —>
<resultMap>
<id property=”” column=”” />
<result property=”” column=”” />
<collection property=”” javaType=””>
<id property=”” column=””/>
<result property=”” column=””/>
</collection>
</resuleMap>
5.2 如果查询操作有多个:
1.不能用rseulrType属性
2.接口方法声明时,对每个参数使用 @param(value=”参数名”)
例如:
public List queryAllUser(@Param(“参数别名”)参数类型 参数名,…);
3.mapper文件中sql,绑定参数 #{参数别名}
六、补充
6.1当sql语句中需要使用大于小于号时,由于xml是一种标签语言,会将其解析为<>括号,固有以下两种解决方案:
方案一:
使用<![CDATA[
select...
]]>
方案二:使用转义字符
> : >
< :<