关于java:springboot集成mybatisPlus

39次阅读

共计 5551 个字符,预计需要花费 14 分钟才能阅读完成。

一 前言

mybatisPlus 可能简化开发,缩小反复代码,很不错的一个我的项目!!

二 springboot 集成 mybatisPlus

2.1 筹备工作

建表语句

CREATE TABLE `customer` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘ 主键 ’,
`customer_name` varchar(255) DEFAULT NULL COMMENT ‘ 顾客名称 ’,
`gender` varchar(255) DEFAULT NULL COMMENT ‘ 性别 ’,
`telephone` varchar(255) DEFAULT NULL COMMENT ‘ 电话号码 ’,
`register_time` timestamp NULL DEFAULT NULL COMMENT ‘ 注册工夫 ’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 COMMENT=’ 顾客表 ’;

我的项目依赖

<dependencies>
<!– –>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!– 测试 –>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!– mybaits plus 插件 –>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>

<!– 阿里数据库连接池 –>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<!– 数据库驱动 –>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!– lombok 简化代码 –>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>

</dependencies>

2.2 配置文件

看 mybatis-plus 相干配置;关键点是 全局 id 的配置;

  • 主键类型 0:” 数据库 ID 自增 ”;
  • 1:” 用户输出 ID”;
  • 2:” 全局惟一 ID (数字类型惟一 ID)”;
  • 3:” 全局惟一 ID UUID”;


# 配置端口
server:
port: 8085
servlet:
context-path: /zszxz
application-display-name: mybatis-plus-demo

spring:
application:
name: mybatis-plus-demo
# 配置数据源
datasource:
url: jdbc:mysql://127.0.0.1:3306/zszxz?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&useSSL=false
username: root
password:
driver-class-name: com.mysql.jdbc.Driver
druid:
filters: stat
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: select ‘1’
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxOpenPreparedStatements: 20

# mybatis-plus 相干配置
mybatis-plus:
# xml 扫描,多个目录用逗号或者分号分隔(通知 Mapper 所对应的 XML 文件地位)
mapper-locations: classpath:**/*Mapper.xml
# 以下配置均有默认值, 能够不设置
global-config:
#主键类型 0:” 数据库 ID 自增 ”, 1:” 用户输出 ID”,2:” 全局惟一 ID (数字类型惟一 ID)”, 3:” 全局惟一 ID UUID”;
id-type: 0
#字段策略 0:” 疏忽判断 ”,1:” 非 NULL 判断 ”),2:” 非空判断 ”
field-strategy: 2
#驼峰下划线转换
db-column-underline: true
#刷新 mapper 调试神器
refresh-mapper: false
#数据库大写下划线转换
#capital-mode: true
#序列接口实现类配置
#key-generator: com.baomidou.springboot.xxx
#逻辑删除配置
#logic-delete-value: 0 # 逻辑已删除值 (默认为 1)
#logic-not-delete-value: 1 # 逻辑未删除值 (默认为 0)
#自定义填充策略接口实现
#   meta-object-handler: com.zhengqing.config.MyMetaObjectHandler
#自定义 SQL 注入器
#sql-injector: com.baomidou.springboot.xxx
configuration:
# 是否开启主动驼峰命名规定映射: 从数据库列名到 Java 属性驼峰命名的相似映射
map-underscore-to-camel-case: true
cache-enabled: false
# 如果查问后果中蕴含空值的列,则 MyBatis 在映射的时候,不会映射这个字段
#   call-setters-on-nulls: true
# 这个配置会将执行的 sql 打印进去,在开发或测试的时候能够用
#   log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 解决 oracle 更新数据为 null 时无奈转换报错,mysql 不会呈现此状况
jdbc-type-for-null: ‘null’

2.3 实体

  • @TableName 映射数据库表名
  • @TableId 对应主键类型,部分配置;
  • @TableField 注解对应数据库字段

/**
* @Author lsc
* <p> </p>
*/
@Data
@TableName(“customer”)// 映射数据库表名
public class Customer {
// 主键
@TableId(type = IdType.AUTO)
private Long id;

// 如果字段和数据库列对应可省略该注解
// @TableField(value = “NAME”,exist = true)
private String customerName;

private String gender;

private String telephone;

private String registerTime;
}

2.4 mapper

mapper 多了继承 BaseMapper

/**
* @Author lsc
* <p> </p>
*/
@Repository
@Mapper
public interface CustomerMapper extends BaseMapper<Customer> {


}

2.5 映射文件

与一般的 mybatis 映射文件一样;如果要应用原生的 Mybatis 办法,自定义即可,跟原来没区别;

<?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=”com.zszxz.plus.mapper.CustomerMapper”>

</mapper>

2.6 分页配置

分页

/**
* @Author lsc
* <p> </p>
*/
@Configuration
@MapperScan(“com.zszxz.plus.service.*.mapper*”)
public class MybatisPlusConfig {

@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置申请的页面大于最大页后操作,true 调回到首页,false 持续申请 默认 false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限度数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
return paginationInterceptor;
}
}

2.7 启动类

@SpringBootApplication
// 扫描 mapper 文件
@MapperScan(“com.zszxz.plus.mapper”)
public class SpringbootMybatisPlusApplication {

public static void main(String[] args) {
SpringApplication.run(SpringbootMybatisPlusApplication.class, args);
}

}

2.8 测试

集成 mybatis plus 后 会有一些默认 的 crud 办法,简化开发;

@SpringBootTest
@RunWith(SpringRunner.class)
public class SpringbootMybatisPlusApplicationTests {



@Autowired
CustomerMapper customerMapper;

@Test
public  void add() {
Customer customer = new Customer();
customer.setCustomerName(“ 大牛 ”);
customer.setGender(“ 男 ”);
customer.setTelephone(“66566”);
customerMapper.insert(customer);
}

@Test
public  void update() {
Customer customer = new Customer();
customer.setId(26L);
customer.setCustomerName(“ 大牛哥 ”);
customer.setGender(“ 男 ”);
customer.setTelephone(“66566”);
customerMapper.updateById(customer);
}

@Test
public  void delete() {

customerMapper.deleteById(24L);
}

@Test
public  void selectByid() {

Customer customer = customerMapper.selectById(26L);
// Customer(id=26, customerName= 大牛哥, gender= 男, telephone=66566, registerTime=null)
System.out.println(customer);
}

@Test
public  void selectByWrapper() {

// 条件封装
QueryWrapper<Customer> wrapper = new QueryWrapper<>();
wrapper.eq(“id”,26L);
List<Customer> customers = customerMapper.selectList(wrapper);
// [Customer(id=26, customerName= 大牛哥, gender= 男, telephone=66566, registerTime=null)]
System.out.println(customers);
}



@Test
public  void page() {
Page<Customer> page = new Page<>(1, 2);
IPage<Customer> customerIPage = customerMapper.selectPage(page, null);
System.out.println(customerIPage);
}


}

更多内容参照官网

官网:https://baomidou.com/

正文完
 0