项目地址:
https://github.com/FateSolo/DAO-Test
目录:
该系列文章将展示六种不同的DAO层实现方法并总结其不同,本章使用Mybatis框架完成DAO操作。
1. 示例代码:
1) 在spring-common.xml中,配置Mybatis:1
2
3
4
5
6
7
8
9
10
11<!-- Mybatis -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="com.fatesolo.entity"/>
<property name="mapperLocations" value="classpath:mapper/*Impl.xml"/>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.fatesolo.dao.impl"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
2) 在build.gradle中,添加Mybatis依赖:1
compile 'org.mybatis:mybatis:3.4.2'
compile 'org.mybatis:mybatis-spring:1.3.1'
3) 在dao.impl包中创建BookDaoMybatisImpl.java,编写如下代码:1
2
3
4
5
6
7
8package com.fatesolo.dao.impl;
import com.fatesolo.dao.BookDao;
import org.springframework.stereotype.Repository;
@Repository("bookDaoMybatisImpl")
public interface BookDaoMybatisImpl extends BookDao {
}
4) 在Resource文件夹下添加子目录mapper,创建并编写BookDaoMybatisImpl.xml:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18<?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.fatesolo.dao.impl.BookDaoMybatisImpl">
<select id="findById" parameterType="int" resultType="Book">
select id, name, author from book where id = #{id}
</select>
<select id="findByNameContaining" parameterType="java.lang.String" resultType="Book">
select id, name, author from book where name like concat('%', #{name}, '%')
</select>
<insert id="save" parameterType="Book" useGeneratedKeys="true" keyProperty="id">
insert into book(name, author) values(#{name}, #{author})
</insert>
</mapper>
5) 打开BookService.java,修改成员变量bookDao的注解:1
@Resource(name = "bookDaoMybatisImpl")
2. 项目运行:
1) 使用Tomcat 8运行项目,使用curl工具添加一条数据:1
curl -d "name=Test3&author=Fate" http://localhost:8080/book
得到如下返回:1
Book{id=3, name='Test3', author='Fate'}
2) 访问http://localhost:8080/book/3 ,得到如下结果:1
Book{id=3, name='Test3', author='Fate'}
3) 访问http://localhost:8080/book/name/Test ,得到如下结果:1
[Book{id=1, name='Test1', author='Fate'}, Book{id=2, name='Test2', author='Fate'}, Book{id=3, name='Test3', author='Fate'}]
3. 总结
Mybatis是轻量级的持久层框架,通过在xml文件中编写sql并与Mapper接口映射,完成DAO层操作。
可以看到使用Mybatis,开发者无需再手动建立实体与表的关系,Mybatis会自动完成实体成员变量与表字段的映射,具备了ORM特性,但仍需要手动编写sql。
作者 [@FateSolo]
2017 年 03月 12日