首页
我们的产品
我们的服务
授权查询
关于我们
博客
联系我们
菜单
wueasy框架之MyBatis多数据库使用
首页
博客
内容详情
APR
2019-05-21
使用wueasy框架过程中,微服务怎么使用`MyBatis`对多个数据库进行操作? 前一章我们已经介绍了**MyBatis使用教程**,本章是在上一章的基础上进行操作,假设你已经对上一章内容有所了解。 ## 新增数据库映射 编写数据库表结构映射实体bean,**注意:包的路径和之前不一样**。 > 为了简化自定义sql,这里使用的是通用`Mapper`,部分属性需要使用注解方式,注解可参考以下api文档`https://github.com/abel533/Mapper/wiki/2.2-mapping` ```java 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`接口提供了常见的增删改查方法,可以直接使用。 ```java 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`的扫描配置,通过配置不同的扫描路径,自动注入不同的数据源** ```yaml 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`测试接口 ```java @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(); } } } ```