2020年12月1日星期二

springboot集成shardingJDBC

一、分表

1.数据表准备

CREATE TABLE `t_address` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `code` varchar(64) DEFAULT NULL COMMENT '编码', `name` varchar(64) DEFAULT NULL COMMENT '名称', `pid` varchar(64) NOT NULL DEFAULT '0' COMMENT '父id', `type` int(11) DEFAULT NULL COMMENT '1国家2省3市4县区', `lit` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8;CREATE TABLE `t_user0` ( `id` bigint(20) NOT NULL, `name` varchar(64) DEFAULT NULL COMMENT '名称', `city_id` int(12) DEFAULT NULL COMMENT '城市', `sex` tinyint(1) DEFAULT NULL COMMENT '性别', `phone` varchar(32) DEFAULT NULL COMMENT '电话', `email` varchar(32) DEFAULT NULL COMMENT '邮箱', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间', `password` varchar(32) DEFAULT NULL COMMENT '密码', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE `t_user1` ( `id` bigint(20) NOT NULL, `name` varchar(64) DEFAULT NULL COMMENT '名称', `city_id` int(12) DEFAULT NULL COMMENT '城市', `sex` tinyint(1) DEFAULT NULL COMMENT '性别', `phone` varchar(32) DEFAULT NULL COMMENT '电话', `email` varchar(32) DEFAULT NULL COMMENT '邮箱', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间', `password` varchar(32) DEFAULT NULL COMMENT '密码', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.引入坐标

<dependency> <groupId>io.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <version>3.0.0</version></dependency>

3.yml文件配置

sharding: jdbc: datasource:  names: ds0 #指定数据源 名称可以自定义,注意:名称要跟后面的配置一致  ds0: #配置数据源的连接信息  type: com.alibaba.druid.pool.DruidDataSource  driver-class-name: com.mysql.jdbc.Driver  url: jdbc:mysql://localhost:3306/test  username: root  password: 123456 config:  sharding:  props:   sql.show: false #是否输出sql  tables:   t_user: #t_user表   key-generator-column-name: id #主键   actual-data-nodes: ds0.t_user${0..1} #数据节点,均匀分布   table-strategy: #分表策略    inline: #行表达式    sharding-column: sex #按照指定列进行分表---分表策略使用sex字段去摸    algorithm-expression: t_user${sex % 2} #按模运算分配

4.开始测试

@RestControllerpublic class UserController { @Autowired private UserMapper userMapper; @RequestMapping("/user/save") @ResponseBody public String save() {  for (int i = 0; i <10 ; i++) {   User user=new User();   user.setName("test"+i);   user.setCityId(1%2==0?1:2);   user.setCreateTime(new Date());   user.setSex(i%2==0?1:2);   user.setPhone("11111111"+i);   user.setEmail("xxxxx");   user.setCreateTime(new Date());   user.setPassword("eeeeeeeeeeee");   userMapper.save(user);  }  return "success"; } @RequestMapping("/user/get/{id}") @ResponseBody public User get(@PathVariable Long id) {  User user = userMapper.get(id);  System.out.println(user.getId());  return user; }}

@Mapperpublic interface UserMapper { /**  * 保存  */ void save(User user); /**  * 查询  * @param id  * @return  */ User get(Long id);}

<mapper namespace="com.mrchen.springboottest.mapper.UserMapper"> <insert id="save" parameterType="com.mrchen.springboottest.entity.User">  INSERT INTO t_user(name,phone,email,city_id,sex,password)  VALUES  (  #{name},#{phone},#{email},#{cityId},#{sex},#{password}  ) </insert> <select id="get" parameterType="long" resultType="com.mrchen.springboottest.entity.User">  select * from t_user where id = #{id} </select></mapper>

5.启动项目,在浏览器输入相应地 最后查看数据库相应表,发现数据分别插入两个表。









原文转载:http://www.shaoqun.com/a/494486.html

西农:https://www.ikjzd.com/w/1368

环球市场:https://www.ikjzd.com/w/1762

打折网站:https://www.ikjzd.com/w/74


一、分表1.数据表准备CREATETABLE`t_address`(`id`bigint(20)NOTNULLAUTO_INCREMENT,`code`varchar(64)DEFAULTNULLCOMMENT'编码',`name`varchar(64)DEFAULTNULLCOMMENT'名称',`pid`varchar(64)NOTNULLDEFAULT'
net-a-porter:net-a-porter
韩国naver:韩国naver
36个小时逛遍阿联酋 :36个小时逛遍阿联酋
深圳到武汉坐高铁要多久?:深圳到武汉坐高铁要多久?
海南2020端午节活动景点推荐?海南端午节2020旅游攻略:海南2020端午节活动景点推荐?海南端午节2020旅游攻略

没有评论:

发表评论