使用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<Demo> {
}
数据库连接配置
配置数据库连接信息和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();
}
}
}
网友评论