本篇内容主要讲解“如何编写mybatis-plus、hikariCP动态数据源”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何编写mybatis-plus、hikariCP动态数据源”吧!
最近的项目使用多数据源,于是想起之前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
package com.share.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.share.domain.User;
/**
- @desc:
- @author:caifan
- @date:2020/3/15
- /
public interface UserMapper extends BaseMapper<User> {
}
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
package com.share.service;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.share.domain.User;
import com.share.mapper.UserMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
@Service
@Transactional
@DS("ds1")
public class UserService {
@Resource
private UserMapper userMapper;
public void saveUser1(User user) {
userMapper.insert(user);
}
public User findById(Long id) {
return userMapper.selectById(id);
}
@DS("ds2")
public void saveUser2(User user) {
userMapper.insert(user);
}
}
MybatisApplication.java
package com.share;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan(value = {"com.share.mapper"})
public class MybatisApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisApplication.class, args);
}
}
配置文件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
到此,相信大家对“如何编写mybatis-plus、hikariCP动态数据源”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/3038278/blog/5033479