项目地址: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 <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 8 package 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日