一、分表
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旅游攻略
没有评论:
发表评论