mapper--mybatis封装插件

mapper简介

通用mapper是一个可以实现任意Mybatis通用方法的框架,项目提供了常规的增删改查操作以及Example相关的表单操作。

官网

https://gitee.com/free/Mapper

Mybatis的痛点

  1. mapper.xml文件里有大量的sql,当数据库表字段变动,配置文件就要修改
  2. 需要自己实现sql分页,如:select * from table where … limit 1, 10,自己写分页,除了传参pagepageSize,还需要返回条目总数count
  3. 数据库可移植性差,如果项目更好数据库,如Oracle->MySQL,mapper.xml中的sql要重写,因为Oracle的PLSql和MySQL支持的函数不同
  4. 生成的代码量大,会生成非常多的mapper.xml文件
  5. 批量操作,如插入、更新,需要手写
    而这些可以通过通用mapper解决

使用通用Mapper

和Spring集成

  1. 引入依赖
    Spring和Mybatis的依赖如下:
<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis</artifactId>
	<version>Version</version>
</dependency>
<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis-spring</artifactId>
	<version>Version</version>
</dependency>
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-context</artifactId>
	<version>Version</version>
</dependency>
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-tx</artifactId>
	<version>Version</version>
</dependency>
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-jdbc</artifactId>
	<version>Version</version>
</dependency>

在此基础上,添加通用Mapper的依赖

<dependency>
	<groupId>tk.mybatis</groupId>
	<artifactId>mapper</artifactId>
	<version>Version</version>
</dependency>
  1. 与Spring集成
    只需要把原来配置文件中的org.mybatis.spring.mapper.MapperScannerConfigurer换成tk.mybatis.spring.mapper.MapperScannerConfigurer即可
    即原来的配置是
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
	<property name="basePackage" value="扫描包名"/>
</bean>

现在的是

<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
	<property name="basePackage" value="扫描包名"/>
</bean>

实体类映射

@Table(name="tb_user")
public class User implments Serializable{
	@Id
	private Integer id;

	private String name;
	//getter setter...
}

@Table映射表,@Id映射表的主键

创建mapper接口

public interface UserMapper extends Mapper<User>{}

Mappertk.mybatis.mapper.common.Mapper类,继承了该类的接口指定了泛型类型后,自动拥有针对泛型类型的大量方法:
在这里插入图片描述

接口方法说明

基础接口select
  • List select(T record):根据T对象中的属性名称查询,类似于select * from table as t where t.name=#{name} and t.password=#{password}
  • T selectOne(T record):根据实体中的属性进行查询,只能有一个返回值,有多个结果时抛出异常,查询条件使用等号
  • T selectByPrimaryKey(Object key):根据主键查询,方法参数必须包含完整的主键属性,查询条件使用等号
  • int selectCount(T record):根据实体中的属性查询总数,查询条件使用等号
基础接口insert
  • int insert(T record):保持一个实体,null的属性也会保存,不会使用数据库默认值
  • int insertSelective(T record):保持一个实体,null的属性也会保存,使用数据库默认值
基础接口update
  • int updateByPrimaryKey(T record):根据主键更新实体全部字段,null值会被更新,不使用数据库默认值
  • int updateByPrimaryKeySelective(T record):根据主键更新实体全部字段,null值会被更新,使用数据库默认值
基础接口delete
  • int delete(T record):根据实体属性为条件进行删除,查询条件使用等号
  • int deleteByPrimaryKey(Object key):根据主键进行删除,方法参数必须包含完整的主键属性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值