wueasy框架之MyBatis多数据库使用

使用wueasy框架过程中,微服务怎么使用MyBatis对多个数据库进行操作?

前一章我们已经介绍了MyBatis使用教程,本章是在上一章的基础上进行操作,假设你已经对上一章内容有所了解。

新增数据库映射

编写数据库表结构映射实体bean,注意:包的路径和之前不一样

为了简化自定义sql,这里使用的是通用Mapper,部分属性需要使用注解方式,注解可参考以下api文档https://github.com/abel533/Mapper/wiki/2.2-mapping

package com.wueasy.demo2.entity;

import java.io.Serializable;

import javax.persistence.Id;
import javax.persistence.Table;

import tk.mybatis.mapper.annotation.KeySql;

@Table(name = "demo")
public class Demo implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @KeySql(useGeneratedKeys = true)
    private Long id;

    private String name;

    private Long createdBy;

    private String createdTime;

    private Long modifiedBy;

    private String modifiedTime;

    private String city;

    private String type;

    private String sex;

    private String state;

    private String description;

    private String filePath;

    private String area1;

    private String area2;

    private String area3;



    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Long getCreatedBy() {
        return createdBy;
    }

    public void setCreatedBy(Long createdBy) {
        this.createdBy = createdBy;
    }

    public String getCreatedTime() {
        return createdTime;
    }

    public void setCreatedTime(String createdTime) {
        this.createdTime = createdTime;
    }

    public Long getModifiedBy() {
        return modifiedBy;
    }

    public void setModifiedBy(Long modifiedBy) {
        this.modifiedBy = modifiedBy;
    }

    public String getModifiedTime() {
        return modifiedTime;
    }

    public void setModifiedTime(String modifiedTime) {
        this.modifiedTime = modifiedTime;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getFilePath() {
        return filePath;
    }

    public void setFilePath(String filePath) {
        this.filePath = filePath;
    }

    public String getArea1() {
        return area1;
    }

    public void setArea1(String area1) {
        this.area1 = area1;
    }

    public String getArea2() {
        return area2;
    }

    public void setArea2(String area2) {
        this.area2 = area2;
    }

    public String getArea3() {
        return area3;
    }

    public void setArea3(String area3) {
        this.area3 = area3;
    }

}

新增mapper接口

注意:包的路径和之前不一样 接口需要继承通用Mapper接口,Mapper接口提供了常见的增删改查方法,可以直接使用。

package com.wueasy.demo2.mapper;

import java.util.List;

import com.wueasy.base.entity.DataMap;
import com.wueasy.demo2.entity.Demo;

import tk.mybatis.mapper.common.Mapper;

public interface DemoMapper extends Mapper {

}

数据库连接配置

配置数据库连接信息和mybatis扫描信息,需要配置两个数据库连接。

重点注意:mybatis的扫描配置,通过配置不同的扫描路径,自动注入不同的数据源

wueasy:
  datasource :
    demo : #第一个数据库
      mybatis:
        basePackage: com.wueasy.demo.mapper
        mapperLocations: classpath*:mybatis/wueasy/demo/*.xml
      connection:
        url : jdbc:mysql://localhost:3306/easy_data?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=utf-8
        username : easyadmin
        password : easyadmin
        #连接池配置
        initialSize : 10  #初始化大小
        minIdle : 10  #最小连接
        maxActive : 20  #最大连接
        maxWait : 60000  #配置获取连接等待超时的时间
        timeBetweenEvictionRunsMillis : 2000  #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
        minEvictableIdleTimeMillis : 600000  #配置一个连接在池中最小生存的时间,单位是毫秒
        maxEvictableIdleTimeMillis : 600000  #配置一个连接在池中最大生存的时间,单位是毫秒
        validationQuery : SELECT 1 from dual
        testWhileIdle : true
        testOnBorrow : false
        testOnReturn : false
        keepAlive : true
    demo2 : #第二个数据库
      mybatis:
        basePackage: com.wueasy.demo2.mapper
        mapperLocations: classpath*:mybatis/wueasy/demo2/*.xml
      connection:
        url : jdbc:mysql://localhost:3306/easy_data?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=utf-8
        username : easyadmin
        password : easyadmin
        #连接池配置
        initialSize : 10  #初始化大小
        minIdle : 10  #最小连接
        maxActive : 20  #最大连接
        maxWait : 60000  #配置获取连接等待超时的时间
        timeBetweenEvictionRunsMillis : 2000  #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
        minEvictableIdleTimeMillis : 600000  #配置一个连接在池中最小生存的时间,单位是毫秒
        maxEvictableIdleTimeMillis : 600000  #配置一个连接在池中最大生存的时间,单位是毫秒
        validationQuery : SELECT 1 from dual
        testWhileIdle : true
        testOnBorrow : false
        testOnReturn : false
        keepAlive : true

测试接口

使用junit测试接口

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes=Application.class)
public class DbTests {

    @Autowired
    private UserMapper userMapper;

  @Autowired
    private DemoMapper demoMapper;

    @Test
    public void testObj()  {

        try{
            //查询全部
            System.err.println(JsonHelper.toJSONString(userMapper.selectAll()));

        }catch(Exception e) {
            e.printStackTrace();
        }

    }
}

原文地址

原文地址

你可能感兴趣的:(wueasy框架之MyBatis多数据库使用)