开发者

mybatis-plus与JPA混合的使用方式

开发者 https://www.devze.com 2023-03-31 10:56 出处:网络 作者: K歌、之王
目录前言实践过程一、pom配置二、配置三、实体类四、配置好mapper和Service测试结论前言
目录
  • 前言
  • 实践过程
    • 一、pom配置
    • 二、配置
    • 三、实体类
    • 四、配置好mapper和Service
    • 测试
  • 结论

    前言

    感觉Jpa的动态构建查询不好使用,然后myBATis-plus没有动态构建表的功能,有没有可能使两者混合使用,利用Jpa自动建表的优势 与 mybatis-plus lambda查询的优势 结合一下呢?

    实践过程

    一、pom配置

    <dependencies>
    		<dependency>
    			<groupId>com.baomidou</groupId>
    			<artifactId>mybatis-plus-bootpython-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>
    

    二、配置

    pack编程age 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 jsString 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.exte开发者_C培训nsion.service.IService;
    import com.naruto.entity.PlatformTableModel;
    
    public interface IPlatformTableService extends IService<PlatformTableModel>{
    
    }
    package com.naruto.service.impl;
    
    import org.springframework.stereotype.Service;
    
    imphttp://www.devze.comort 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、启动

    发现表已经自动建立好。

    mybatis-plus与JPA混合的使用方式

    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);
    	}
    	
    }
    

    mybatis-plus与JPA混合的使用方式

    mybatis-plus与JPA混合的使用方式

    结论

    可以结合使用以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号