mybatis-plus与JPA混合的使用方式
作者:K歌、之王
这篇文章主要介绍了mybatis-plus与JPA混合的使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
前言
感觉Jpa的动态构建查询不好使用,然后mybatis-plus没有动态构建表的功能,有没有可能使两者混合使用,利用Jpa自动建表的优势 与 mybatis-plus lambda查询的优势 结合一下呢?
实践过程
一、pom配置
<dependencies> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> </dependencies>
二、配置
package com.naruto.configuration; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; @Configuration @MapperScan({"com.naruto.**.mapper*"}) public class MybatiesPlusConfig { /** * 开启mybatis-plus分页功能 * @return */ @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } }
application.yml配置
spring: jpa: database-platform: org.hibernate.dialect.MySQL5Dialect show-sql: true properties: hibernate: hbm2ddl: auto: update datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/springcloud?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false&nullCatalogMeansCurrent=true username: root password: 123456 mybatis-plus: mapper-locations: classpath*:com/naruto/**/xml/*Mapper.xml global-config: # 关闭MP3.0自带的banner banner: false
三、实体类
此处
Table TableName @Id @GeneratedValue(strategy=GenerationType.AUTO) @TableId(type = IdType.ID_WORKER_STR) 不可忽略
@Table(name="platform_table") @TableName("platform_table") @Entity public class PlatformTableModel implements Serializable{ /** * */ private static final long serialVersionUID = 4977394314428963032L; @Id @GeneratedValue(strategy=GenerationType.AUTO) @TableId(type = IdType.ID_WORKER_STR) private String id; private String tableName; private String tableVersion; private String tableDescrition; private String createBy; private String createTime; private String updateBy; private String updateTime; .... }
四、配置好mapper和Service
<?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.naruto.mapper.PlatformTableMapper"> </mapper>
package com.naruto.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.naruto.entity.PlatformTableModel; public interface PlatformTableMapper extends BaseMapper<PlatformTableModel>{ }
package com.naruto.service; import com.baomidou.mybatisplus.extension.service.IService; import com.naruto.entity.PlatformTableModel; public interface IPlatformTableService extends IService<PlatformTableModel>{ }
package com.naruto.service.impl; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.naruto.entity.PlatformTableModel; import com.naruto.mapper.PlatformTableMapper; import com.naruto.service.IPlatformTableService; @Service public class PlatformTableServiceImpl extends ServiceImpl<PlatformTableMapper, PlatformTableModel> implements IPlatformTableService{ }
测试
1、启动
发现表已经自动建立好。
2、 测试插入 与 查询, 没有问题。
@RestController @RequestMapping("table") public class PlatformTableAction { @Autowired private IPlatformTableService platformTableService; @GetMapping("get") public List<PlatformTableModel> get() { LambdaQueryWrapper<PlatformTableModel> lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(PlatformTableModel::getId, "1461159441186361345"); List<PlatformTableModel> platformTableModels = platformTableService.list(lambdaQueryWrapper); return platformTableModels; } @PostMapping("save") public Result save(@RequestBody PlatformTableModel platformTableModel) { platformTableService.save(platformTableModel); return new Result(platformTableModel); } }
结论
可以结合使用以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。