mysql通用mapper_通用mapper的介绍和入门使用

通用mapper的介绍和入门使用

简介

通用Mapper都可以极大的方便开发人员。可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法。

极其方便的使用MyBatis单表的增删改查。

支持单表操作,不支持通用的多表联合查询。

通用 Mapper 支持 Mybatis-3.2.4 及以上版本。

与传统mapper.xml中写sql比较通用mapper

1.mapper.xml文件里有大量的sql,当数据库表字段变动,配置文件就要修改

2.需要自己实现sql分页,select * from table where . . . limit 1,3

自己手写分页,除了传参page、pageSize,还需要返回条目总数count。

3.数据库可移植性差:如果项目更换数据库,比如oracle–>mysql,mapper.xml中的sql要重新写,因为Oracle的PLSQL 和mysql 支持的函数是不同的。

4.生成的代码量过大。

5.批量操作,批量插入,批量更新,需要自写。

通用mapper底层基于反射机制拼处xml形式的sql然后去执行,所以性能上会多消耗一些时间,不过微乎其微

使用快速入门

第一步:导包

tk.mybatisgroupId>

mapper-spring-boot-starterartifactId>

2.0.3version>

dependency>

mysqlgroupId>

mysql-connector-javaartifactId>

6.0.6version>

dependency>

第二步:springboot配置

################## Mybatis配置

mybatis:

type-aliases-package: cn.com.cdboost.charge.operations.model

mapper-locations: classpath*:/mapper/*Mapper.xml

################## Mapper

mapper:

mappers: cn.com.cdboost.charge.operations.common.CommonMapper

not-empty: false

identity: MYSQL

################### PageHelper

pagehelper:

helperDialect: mysql

reasonable: true#为了使用输入页数为负或者超出最大页时候使页数为最小或最大值

supportMethodsArguments: true

params: count=countSql

################## Druid Datasource配置

spring:

datasource:

druid:

# 驱动配置信息

# db-type: com.alibaba.druid.pool.DruidDataSource

driver-class-name: com.mysql.cj.jdbc.Driver

url: urllllll

username: aaaaaa

password: bbbbbb

# 连接池的配置信息

# 初始化大小,最小,最大

initial-size: 5

min-idle: 5

max-active: 20

# 配置获取连接等待超时的时间

max-wait: 60000

# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒

time-between-eviction-runs-millis: 60000

# 配置一个连接在池中最小生存的时间,单位是毫秒

min-evictable-idle-time-millis: 300000

validation-query: SELECT 1

test-while-idle: true

test-on-borrow: false

test-on-return: false

# 是否缓存preparedStatement,也就是PSCache 官方建议MySQL下建议关闭

pool-prepared-statements: false

max-pool-prepared-statement-per-connection-size: 20

第三步:准备实体类

@Table(name = "表名")

public class OperationsLog implements Serializable {

@GeneratedValue(strategy = GenerationType.IDENTITY)//自动增长

@Id //主键

private Integer id;

@Column(name = "字段名")

private String username;

第四步:准备一个通用mapper集成其他接口的功能

ublic interface CommonMapper extends

Mapper,

MySqlMapper,

IdsMapper,

IdListMapper,

ConditionMapper {

default int deleteWithVersion(T t){

int result = delete(t);

if(result == 0){

throw new RuntimeException("删除失败!");

}

return result;

}

default int deleteByPrimaryKeyWithVersion(T t) {

int result = deleteByPrimaryKey(t);

if(result == 0){

throw new RuntimeException("删除失败!");

}

return result;

}

default int updateByPrimaryKeyWithVersion(T t){

int result = updateByPrimaryKey(t);

if(result == 0){

throw new RuntimeException("更新失败!");

}

return result;

}

default int updateByPrimaryKeySelectiveWithVersion(T t){

int result = updateByPrimaryKeySelective(t);

if(result == 0){

throw new RuntimeException("更新失败!");

}

return result;

}

}

最后:测试

@Resource

private OperationsLogMapper operationsLogMapper;

@Test

public void test01(){

List operationsLogs = operationsLogMapper.selectAll();

operationsLogs.forEach(e-> System.out.println(e.getUserName()));

}

总结

1.这种方式比较起来更适合增删改查一些简单的操作,如果需要复杂的操作,仍然可以使用以前的mapper.xml方式进行数据库操作。

2.关于分页可以使用更加简单的方式:PageHelper,下次再说这个。

3.关于筛选高级查询,可以使用Condition类来进行,下次单独说。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值