博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mybatis之Mapper动态代理
阅读量:6714 次
发布时间:2019-06-25

本文共 3345 字,大约阅读时间需要 11 分钟。

一、什么是Mapper的动态代理
采用Mapper动态代理方法只需要编写相应的Mapper接口(相当于Dao接口),那么Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同Dao接口实现类方法。
Mapper接口开发需要遵循以下规范:
1、Mapper.xml文件中的namespace与mapper接口的全类名相同。
2、Mapper接口方法名和Mapper.xml中定义的每个statement的id相同。
3、Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同。
4、Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同。
二、实例演示
这里只演示了利用代理进行查询和插入的操作,其他操作与之情况类似。只需要在接口中定义相关方法,然后在xml中进行相关配置即可。
这个演示是建立在前一个增删改查的项目基础上。项目整体目录大致相同。基本属性文件信息也相同。这里不作详述。
1、新建一个com.kang.mapper的包,定义map接口,接口名任意,这里是UserMapper。
package com.kang.mapper;import java.util.List;import com.kang.pojo.User;public interface UserMapper {	//根据用户id查询用户信息	public User findUserById(int id) throws Exception;	//查询用户列表	public List
findUserByUsername(String username) throws Exception; //添加用户信息 public void insertUser(User user)throws Exception; }
2、配置xml文件
UserMapper.xml
select LAST_INSERT_ID()
insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address})
注意到配置文件中的id属性值和map接口中的方法名是一一对应的。
3、在SqlMapConfig.xml中加入映射文件
4、测试代码
package com.kang.test;import java.io.IOException;import java.io.InputStream;import java.util.Date;import java.util.List;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Before;import org.junit.Test;import com.kang.mapper.UserMapper;import com.kang.pojo.User;public class UserTest {	// 会话工厂	private SqlSessionFactory sqlSessionFactory;	@Before	public void createSqlSessionFactory() throws IOException {		// 配置文件SqlMapConfig.xml在类路径下		String resource = "SqlMapConfig.xml";		// 得到配置文件流		InputStream inputStream = Resources.getResourceAsStream(resource);		// 创建会话工厂,传入mybatis的配置文件信息		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);	}	@Test	public void testFindUserById() throws Exception {		//获取session		SqlSession session = sqlSessionFactory.openSession();		//获取mapper接口的代理对象		UserMapper userMapper = session.getMapper(UserMapper.class);		//调用代理对象方法		User user = userMapper.findUserById(27);		System.out.println(user);		//关闭session		session.close();		System.out.println("---------执行完毕-----------");			}		@Test	public void testFindByUsername() throws Exception{		//获取session		SqlSession session = sqlSessionFactory.openSession();		//获取mapper接口的代理对象		UserMapper userMapper = session.getMapper(UserMapper.class);		//调用代理对象方法		List
list=userMapper.findUserByUsername("张"); for (User user : list) { System.out.println(user); } //关闭session session.close(); System.out.println("---------执行完毕-----------"); } @Test public void testInsert() throws Exception{ User user=new User(); user.setUsername("cxk"); user.setSex("1"); user.setBirthday(new Date()); user.setAddress("四川成都"); SqlSession session=sqlSessionFactory.openSession(); UserMapper userMapper=session.getMapper(UserMapper.class); userMapper.insertUser(user); session.commit(); //关闭session session.close(); System.out.println("---------执行完毕-----------"); } }

5、单元测试

id查询测试

模糊查询测试

插入数据测试

转载于:https://www.cnblogs.com/kangsir/p/6653218.html

你可能感兴趣的文章
Hive常用命令及设置
查看>>
ubuntu下安装kvm
查看>>
log4j配置
查看>>
去掉Intel集成显卡的桌面右键菜单
查看>>
我的友情链接
查看>>
MediaPlayer播放网络视频
查看>>
两台电脑可以同时用一个3G无线网卡上网
查看>>
面试的时候你感觉受到尊重了吗?
查看>>
LNMP - nginx用户认证
查看>>
redis主从配置
查看>>
理解NetScaler配置中的NSIP,VIP,MIP,SNIP
查看>>
perl--用一组数字作为参数 返回所有大于平均值的数
查看>>
三种东西永远不要放到数据库里
查看>>
不要做浮躁的嵌入式系统工程师
查看>>
与智者言
查看>>
Define A Host Group
查看>>
Linux文本编辑器的重要组合键
查看>>
Android下VideoView的研究
查看>>
关于CSS优先级算法是如何计算?
查看>>
前端BOM和DOM
查看>>