前言
筆者所接觸的項目中,大多擁有大量的數據,數據庫都采用分表的設計。本來想分享下分表設計的邏輯,但由于分表都是基于MyBatis的,為了照顧更多的讀者,本文先分享在SpringBoot中集成MyBatis的方法,后續將基于此,設計分表的邏輯。
案例
1.主要Maven依賴
MySQL數據庫驅動
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-JAVA</artifactId>
<scope>runtime</scope>
</dependency>
Mybatis的SprignBoot的Starter
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
2.主要項目配置
配置數據庫連接、駝峰命名、mApper路徑、domain路徑。
# mysql
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/idempotent?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123
# mybatis
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.example.itspringbootmybatis.domain
3.Domain層
數據庫表對應的Java對象
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class UserInfo {
/**
* 自增ID
*/
private Long id;
/**
* 用戶名
*/
private String name;
/**
* 用戶余額
*/
private BigDecimal money;
/**
* 創建時間
*/
private Date createTime = new Date();
}
4.Mapper層
這里實例定義了一個獲取所有用戶數據庫的接口
@Mapper
@Component
public interface UserInfoMapper {
/**
* 獲取所有用戶信息
*
* @return 用戶
*/
List<UserInfo> getAll();
}
對應的SQL
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--mapper-->
<mapper namespace="com.example.itspringbootmybatis.mapper.UserInfoMapper">
<!--獲取所有用戶信息-->
<select id="getAll" resultType="com.example.itspringbootmybatis.domain.UserInfo">
select *
from user_info;
</select>
</mapper>
5.測試
引入接口,調用方法測試
@SpringBootTest
class ItSpringBootMybatisApplicationTests {
@Resource
private UserInfoMapper userInfoMapper;
@Test
void contextLoads() {
System.out.println(userInfoMapper.getAll());
}
}
可以看到結果是正常輸出的
說明集成完畢
最后
本文代碼,已經上傳到github,詳情見如下鏈接:
https://github.com/larger5/spring-boot-mybaits.git