课程大纲
- DAO框架
- MyBatis简介
- 代码示例
DAO框架
在数据访问中使用数据访问对象(DAO),使我们可以将底层数据访问逻辑与业务逻辑分离开来,DAO框架为每一个数据源提供了CRUD(创建、读取、更新、删除)操作的类。
DAO模式是标准J2EE设计模式之一。开发人员用这种模式将底层数据操作与上层业务逻辑隔离,一个典型的DAO框架实现以下组件:
- 一个DAO工厂类
- 一个DAO接口(SELECT/INSERT/DELETE/UPDATE)
- 一个实现了DAO接口的具体类
- 数据传输对象
DAO框架的特点
- 屏蔽了底层数据访问细节,实现了业务逻辑与数据访问逻辑的分离;
- 简化代码开发,提高代码复用率;
- 相叫原生SQL可能会带来额外的性能损耗(利用反射机制封装对象,SQL转换等)。
MyBatic简介
- mybatis是一个主流的DAO框架,是Apache的开源项目ibatis的升级版;
- mybatis支持普通SQL查询,存储过程和高级映射,消除了几乎所有JDBC的代码和参数手工设置以及结果集的检索;
- 接口丰富、使用简单;
- 相较于hibernate更加轻量级,支持原生SQL语句;
- 支持查询缓存。
MyBatic代码示例
- 环境搭建,数据源和映射配置文件的编写
- 单值、多值查询
- 增删改数据
- 连表查询
conf.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/blog?useUnicode=true&characterEncoding=utf8" />
<property name="username" value="blog_user" />
<property name="password" value="blog_pwd" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 注册userMapper.xml文件-->
<mapper resource="com/wzy/mybatis/mapping/userMapper.xml"/>
</mappers>
</configuration>
userMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wzy.mybatis.mapping.userMapper">
<select id="getUser" parameterType="int"
resultType="com.wzy.mybatis.model.User">
select * from user where id=#{id}
</select>
<resultMap id="UserMap" type="com.wzy.mybatis.model.User">
<id column="id" property="id" />
<result column="name" property="name" />
<result column="age" property="age" />
</resultMap>
<select id="getUserList" resultMap="UserMap">
select * from user
</select>
<insert id="addUser" parameterType="com.wzy.mybatis.model.User"