整体项目框架!
在这里插入图片描述
pom.xml文件
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--shardingsphere start-->
<!-- for spring boot -->
<dependency>
<groupId>io.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
<!-- for spring namespace -->
<dependency>
<groupId>io.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-namespace</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<!--shardingsphere end-->
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
application.properties
结合mybaits的话需要加入包扫描
SpringBootShardingApplication启动类
UserPo实体类
public class UserPo implements Serializable {
private static final long serialVersionUID = -2683134890547888729L;
private Long id;
private String name;
private String password;
private String amt;
private Integer age;
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 String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getAmt() {
return amt;
}
public void setAmt(String amt) {
this.amt = amt;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
UserMapper
public interface UserMapper {
List<UserPo> getUserList();
void save(@Param("id") Long id,@Param("username") String userName, @Param("age") Integer age);
}
UserRepository
@Repository
public class UserRepository {
@Autowired
private UserMapper userMapper;
public List<UserPo> getUserList() {
return userMapper.getUserList();
}
public void save(Long id) {
//测试的时候save名称和年龄固定写死了,可以自己定义
userMapper.save(id,"lsl",24);
}
}
UserMapper.xml类
<mapper namespace="com.xd.spring.boot.mapper.UserMapper">
<select id="getUserList" resultType="com.xd.spring.boot.entity.UserPo">
SELECT id,name,amt,password,age from user
</select>
<insert id="save">
insert into user(id,name,age) values (#{id},#{username},#{age})
</insert>
</mapper>
UserController
@RestController
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping("/select")
public List<UserPo> select() {
return userRepository.getUserList();
}
@GetMapping("/save/{id}")
public void save(@PathVariable(name = "id") Long id) {
userRepository.save(id);
}
}
两个数据库初始两张表user_0,user_1
启动项目,调用select接口查询,结果为16条数据(从0开始),每个数据库8条,查询的是两个数据库的和
后台日志打印也能看到
访问http://localhost:8088/save/55
因为代码中年龄写死24,24%2余0,故应该是插入user_0表中,传入的id为55,插入的数据库应该是ds1数据库