程序员的资源宝库

网站首页 > gitee 正文

mybatis-plus、hikariCP动态数据源

sanyeah 2024-04-01 11:29:08 gitee 5 ℃ 0 评论

      最近的项目使用多数据源,于是想起之前mybatis-plus系列的dynamic-datasource-springboot-starter

由于springboot2.x使用hikari作为默认数据库连接池,就是用springboot2.X+mybatis-plus3.x+dynamic-datasource-springboot-starter3.0.0进行了集成,代码如下

MybatisConfiguration.java
package com.share.config;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisConfiguration {

/**
 * 分页插件注册
 * @return
 */
@Bean
public PaginationInterceptor paginationInterceptor() {
    return new PaginationInterceptor();
}

}

  BaseEntity.java

package com.share.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

@Data
public class BaseEntity implements Serializable {
private static final long serialVersionUID = 5741450406019549099L;
@TableId(type = IdType.AUTO)
private Long id;
@TableField(value = "create_time")
private Date createTime;
@TableField(value = "update_time")
private Date updateTime;
@TableField(value = "delete_time")
private Date deleteTime;

}

  User.java

package com.share.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.Version;
import lombok.Data;

import java.util.Date;

@Data
@TableName(value ="user")
public class User extends BaseEntity {
@Version
private Integer version;
private String username;
private String nickname;
private String password;
private String email;
private String phone;
private Integer age;
private Integer gender;
private Integer status;
@TableField(value = "last_login_time")
private Date lastLoginTime;

@TableLogic(value = "0", delval = "1")
private Integer del;

}

  UserMapper.java

 1 package com.share.mapper;
 2 
 3 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 4 import com.share.domain.User;
 5 
 6 /**
 7  * @desc:
 8  * @author:caifan
 9  * @date:2020/3/15
10  */
11 public interface UserMapper extends BaseMapper<User> {
12 }

UserRest.java

package com.share.rest;

import com.share.domain.User;
import com.share.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

@RestController
@RequestMapping("/rest/user")
public class UserRest {
@Autowired
private UserService userService;

@RequestMapping(value = "/save1", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public void save1(@RequestBody User user) {
    if (null == user.getUpdateTime()) {
        user.setUpdateTime(new Date());
    }
    userService.saveUser1(user);
}

@RequestMapping(value = "/save2", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public void save2(@RequestBody User user) {
    if (null == user.getUpdateTime()) {
        user.setUpdateTime(new Date());
    }
    userService.saveUser2(user);
}

}

  UserService.java

 1 package com.share.service;
 2 
 3 import com.baomidou.dynamic.datasource.annotation.DS;
 4 import com.share.domain.User;
 5 import com.share.mapper.UserMapper;
 6 import org.springframework.stereotype.Service;
 7 import org.springframework.transaction.annotation.Transactional;
 8 
 9 import javax.annotation.Resource;
10 
11 @Service
12 @Transactional
13 @DS("ds1")
14 public class UserService {
15     @Resource
16     private UserMapper userMapper;
17 
18     public void saveUser1(User user) {
19         userMapper.insert(user);
20     }
21 
22     public User findById(Long id) {
23         return userMapper.selectById(id);
24     }
25 
26     @DS("ds2")
27     public void saveUser2(User user) {
28         userMapper.insert(user);
29     }
30 
31 }

MybatisApplication.java

 1 package com.share;
 2 
 3 import org.mybatis.spring.annotation.MapperScan;
 4 import org.springframework.boot.SpringApplication;
 5 import org.springframework.boot.autoconfigure.SpringBootApplication;
 6 
 7 @SpringBootApplication
 8 @MapperScan(value = {"com.share.mapper"})
 9 public class MybatisApplication {
10     public static void main(String[] args) {
11         SpringApplication.run(MybatisApplication.class, args);
12     }
13 }

配置文件application.properties

server.port=9001

mybatis-plus.global-config.db-config.id-type=auto
mybatis
-plus.global-config.db-config.logic-delete-field=del
mybatis
-plus.global-config.db-config.logic-delete-value=1
mybatis
-plus.global-config.db-config.logic-not-delete-value=0

mybatis-plus.global-config.db-config.field-strategy=not_empty
spring.datasource.dynamic.primary
=ds1
spring.datasource.dynamic.datasource.ds1.username
=root
spring.datasource.dynamic.datasource.ds1.password
=123456
spring.datasource.dynamic.datasource.ds1.url
=jdbc:mysql://localhost:3306/demo_ds_0
spring.datasource.dynamic.datasource.ds1.driver-class-name=com.mysql.jdbc.Driver

动态数据源配置

spring.datasource.dynamic.datasource.ds1.hikari.jdbc-url=jdbc:mysql://localhost:3306/demo_ds_0
spring.datasource.dynamic.datasource.ds1.hikari.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.dynamic.datasource.ds1.hikari.username
=root
spring.datasource.dynamic.datasource.ds1.hikari.password
=123456
spring.datasource.dynamic.datasource.ds1.hikari.connection
-test-query=select 1 from dual
spring.datasource.dynamic.datasource.ds1.hikari.is
-auto-commit=true

spring.datasource.dynamic.datasource.ds2.username=root
spring.datasource.dynamic.datasource.ds2.password
=123456
spring.datasource.dynamic.datasource.ds2.url
=jdbc:mysql://localhost:3306/demo_ds_1
spring.datasource.dynamic.datasource.ds2.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.dynamic.datasource.ds2.hikari.jdbc
-url=jdbc:mysql://localhost:3306/demo_ds_1
spring.datasource.dynamic.datasource.ds2.hikari.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.dynamic.datasource.ds2.hikari.username
=root
spring.datasource.dynamic.datasource.ds2.hikari.password
=123456

完整代码

 

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表