Mybatis之在Mapper层使用泛型

本文详细介绍了一种基于MyBatis的通用DAO设计方法,包括创建泛型接口BaseDaoMapper,实现基本CRUD操作;定义特定映射器UserDaoMapper接口,继承BaseDaoMapper并增加特定方法;配置UserDaoMapper的SQL映射文件,实现具体SQL语句;最后通过测试用例验证UserDaoMapper接口的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.创建BaseDaoMapper泛型接口,定义基本CRUD操作抽象方法

public interface BaseDaoMapper <T>{
	int insert(T obj);//插入数据
	int delete(int id);//删除数据
	int updata(T obj);//更新数据
	T get(int id);//查找数据
	T getByName(String name);//查找数据
	List<T> list();//列表数据
}

2.定义映射器UserDaoMapper接口


```handlebars
public interface UserDaoMapper extends BaseDaoMapper<User>{
	public int totalUser();
}

通过继承,获得基本CRUD抽象方法如下:
//	User get(int id);//查找数据
//	User getByName(String name);//查找数据
//	int insert(User obj);//插入数据
//	int delete(int id);//删除数据
//	int updata(User obj);//更新数据	
//	List<User> list();//列表数据
**3.定义映射器配置文件,**配置对应UserDaoMapper接口所有方法的sql语句

```handlebars
<?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="z7.com.dao.UserDao">
	
	<!-- User get(int id);//查找数据-->
	<select id="get" parameterType="_int"  resultType="user">
		select id,name,pwd,rights,max_lend as maxLend,create_time as createTime from z7_user  where id=#{id}
	</select>
	<!-- User getByName(String name);//查找数据 -->
	<select id="getByName" parameterType="string"  resultType="user">
		select id,name,pwd,rights,max_lend as maxLend,create_time as createTime from z7_user   where name=#{name}
	</select>
	<insert id="insert"  parameterType="user">
		insert into z7_user(name,pwd,rights,max_lend,create_time) values(#{name},#{pwd},#{rights},#{maxLend},now())
	</insert>
	<select id="list"  resultType="user">
		select id,name,pwd,rights,max_lend as maxLend,create_time as createTime from z7_user
	</select>
	<!-- int totalUser(); -->
	<select id="totalUser" resultType="_int">
		select count(id)  from z7_user
	</select>
	<update id="updata" parameterType="user">
		update z7_user set name=#{name},pwd=#{pwd},rights=#{rights},max_lend=#{maxLend} where id=#{id}
	</update>
	<delete id="delete" parameterType="_int">
		delete from z7_user where id=#{id}
	</delete>
</mapper>

4.测试UserDaoMapper接口

@RunWith(SpringJUnit4ClassRunner.class)  //引入了spring单元测试
@ContextConfiguration(locations="classpath:applicationContext.xml")  //加载spring配置文件
public class TestUserDao {
	@Resource
	private UserDao udMapper;
	@Test
	public void testList() {
		List<User> list=udMapper.list();
		list.forEach(System.out::println);
	}
	@Test
	public void testTotal() {
		int num=udMapper.totalUser();
		System.out.println(num);
	}
	@Test
	public void testGet() {
		User user=udMapper.get(1);
		System.out.println(user);
	}
	@Test
	public void testGet2() {
		User user=udMapper.getByName("admin");
		System.out.println(user);
	}
	@Test
	public void testadd() {
		User user=new User();
		user.setName("userDao123");
		user.setPwd("321");
		int num=udMapper.insert(user);
		System.out.println(num);
	}
	@Test
	public void testupdate() {
		User user=udMapper.getByName("userDao123");
		user.setName("ddddd");
		user.setPwd("ddd");
		int num=udMapper.updata(user);
		System.out.println(num);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值