炒沙作縻终不饱,缕冰文章费工巧。这篇文章主要讲述02.MyBatis在DAO层开发使用的Mapper动态代理方式相关的知识,希望能为你提供帮助。
在实际开发中,Mybatis作用于DAO层,那么Service层该如何调用Mybatis
【02.MyBatis在DAO层开发使用的Mapper动态代理方式】Mybatis鼓励使用Mapper动态代理的方式
Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体等于Dao接口实现类方法。
1.编写Mapper.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"> < !-- namespace必须和Mapper接口类路径一致 --> < mapper namespace="cn.mybatis.mapper.UserMapper"> < !-- 通过ID查询一个结果 --> < select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User"> select * from user where id = #{id} < /select> < !-- 通过用户名模糊查询 --> < select id="findUserByUsername" parameterType="String" resultType="cn.itcast.mybatis.po.User"> select * from user where username like "%"#{username}"%" < /select> < !-- 添加用户 --> < insert id="insert" parameterType="cn.itcast.mybatis.po.User"> insert into user(username,sex,birthday,address) values(#{username},#{sex},#{birthday},#{address}) < /insert> < /mapper>
2.编写Mapper.java接口文件
public interface UserMapper {/** * 通过ID查询一个结果 * @param id * @return */ public User findUserById(int id); /** * 通过用户名模糊查询 * @param username * @return */ public List< User> findUserByUsername(String username); /** * 添加用户 * @param user */ public void insert(User user); }
3.Mapper接口开发必须遵循的规范
- 1.Mapper.xml文件中的【namespace】必须与Mapper.java接口【类路径】相同
- 2.Mapper.java接口中的【方法名】必须与Mapper.xml中对应的【id】相同
- 3.Mapper.java接口中的【入参】必须与Mapper.xml中对应的【parameter】相同
- 4.Mapper.java接口中的【返回类型】必须与Mapper.xml中对应的【resultType】相同
文章图片
5.测试
public class UserServiceImpl {private SqlSessionFactory sqlSessionFactory; /** * 初始化工厂 * * @throws Exception */ @Before public void init() throws Exception { InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml"); this.sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); }/** * 通过ID查询一个结果 */ @Test public void m01() { // 获取sqlSession,和Spring整理后由Spring管理 SqlSession sqlSession = this.sqlSessionFactory.openSession(); // 从sqlSession中获取Mapper接口的代理对象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); // 执行查询 User user = userMapper.findUserById(10); System.out.println(user); // 和Spring整理后由Spring管理 sqlSession.close(); }/** * 通过用户名模糊查询 */ @Test public void m02() { // 获取sqlSession,和Spring整理后由Spring管理 SqlSession sqlSession = this.sqlSessionFactory.openSession(); // 从sqlSession中获取Mapper接口的代理对象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); // 执行查询 List< User> list = userMapper.findUserByUsername("王五"); for (User user : list) { System.out.println(user); }// 和Spring整理后由Spring管理 sqlSession.close(); }/** * 添加用户 */ @Test public void m03() { // 获取sqlSession,和Spring整理后由Spring管理 SqlSession sqlSession = this.sqlSessionFactory.openSession(); // 从sqlSession中获取Mapper接口的代理对象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); // 执行查询 User user = new User(); user.setUsername("添加User"); user.setSex("男"); user.setBirthday(new Date()); user.setAddress("未知区域"); userMapper.insert(user); // 和Spring整理后由Spring管理 sqlSession.commit(); sqlSession.close(); } }
推荐阅读
- 学生管理App测试用例
- Azure上通过haproxy实现APP Gateway或WAF的http跳转https
- Android JNI和NDK学习(09)--JNI实例二 传递类对象
- Android中Environment与StatFs获取系统/SDCard存储空间大小
- 安卓开发工程师应该这样快速使用机智云APP开源框架
- shadow mapping实现动态shadow实现记录
- 久省优选系统商城开发app平台分析
- Android pxdpsp之间相互转换
- 安卓三级缓存(初级进阶中级)