热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深入浅出:SSM框架与ShardingSphere4.10的无缝集成指南

本文将详细介绍如何在SSM框架中无缝集成ShardingSphere4.10,以实现高效的数据分片和读写分离。通过实例演示和代码解析,帮助开发者快速掌握这一复杂但实用的技术。文章从基础概念入手,逐步深入到具体配置和应用实践,旨在为读者提供一个全面、易懂的整合指南。

前言

官方网站http://shardingsphere.apache.org/index_zh.html

网上费了老大力气找各种整合ssm整合shardingjdbc的项目发现都是1.x的,连个or查询都不支持,有毛用,废话不说了,直接上干货

目录

一.sql准备

二. mvn配置

三.数据源配置

五,实体层无任何区别

六,dao层和原来没任何区别

七,mapper层和原来没任何区别

八,在一个service层中调用



一.sql准备

准备两张表user_0,user_1

DROP TABLE IF EXISTS `user_0`;
CREATE TABLE `user_0` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(100) DEFAULT NULL,`age` int(11) DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;-- ----------------------------
-- Table structure for user_1
-- ----------------------------
DROP TABLE IF EXISTS `user_1`;
CREATE TABLE `user_1` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(100) DEFAULT NULL,`age` int(11) DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

 

二. mvn配置

org.apache.shardingspheresharding-jdbc-core4.1.0
org.apache.shardingspheresharding-jdbc-spring-namespace4.1.0

注意:此处只贴出shardingsphere的,此次示例是老ssm项目新加shardingsphere的故其它不再展示

ssm和druid版本也贴一下吧

4.0.8.RELEASE
3.2.8
1.2.2
1.1.10

三.数据源配置

在你的原数据配置文件中找到老数据源配置,在老数据源配置下面新增数据源配置 shardingDataSource,并把老数据源连接改成  shardingDataSource

{id % 2}" />{0..1}" table-strategy-ref="userTableStrategy" />false

 注意:一定要用$->{...}  不要用  ${...}  来自官方建议,不信可以试试哈,有惊喜呀

https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/configuration/spring-namespace/sharding/

行表达式标识符可以使用 ${...} 或 $->{...},但前者与 Spring 本身的属性文件占位符冲突,因此在 Spring 环境中使用行表达式标识符建议使用 $->{...}

五,实体层无任何区别

public class UserEntity {private int id;private String name;private int age;public UserEntity() {}public UserEntity(int id, String name, int age) {this.id = id;this.name = name;this.age = age;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}@Overridepublic String toString() {return "UserEntity{" +"id=" + id +", name='" + name + '\'' +", age=" + age +'}';}
}

六,dao层和原来没任何区别

import com.thinkgem.jeesite.common.persistence.CrudDao;
import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
import com.thinkgem.jeesite.modules.sharding.entity.UserEntity;@MyBatisDao
public interface ShardingUserDao extends CrudDao {int insertOne(UserEntity user);UserEntity selectByPk(int id);
}

 

七,mapper层和原来没任何区别


INSERT INTO user(id, name,age) VALUE(#{id},#{name},#{age})

八,在一个service层中调用


@Autowiredprivate ShardingUserDao userDao;@Transactional(readOnly = false)public void save() {userDao.insertOne(new UserEntity(12, "333", 1122));userDao.insertOne(new UserEntity(14, "3333", 1122));System.out.println(userDao.selectByPk(1));System.out.println(userDao.selectByPk(2));}

 

结果

原创不易,转载请注明出处


推荐阅读
  • 在上一章【第三十九章:基于SpringBoot&Quartz完成定时任务分布式单节点持久化】中我们已经完成了任务的持久化,当我们创建一个任务时任务会被quartz定时任务框架自动持 ... [详细]
  • 本文介绍了如何在 Spring Boot 项目中使用 spring-boot-starter-quartz 组件实现定时任务,并将 cron 表达式存储在数据库中,以便动态调整任务执行频率。 ... [详细]
  • Shiro功能拓展:登录失败重试次数限制
    本文详细介绍了如何在Apache Shiro框架中实现对用户登录失败重试次数的限制,通过自定义密码匹配器来增强系统的安全性。该方法不仅能够有效防止暴力破解攻击,还能确保合法用户的账户安全。 ... [详细]
  • 本文介绍了一个使用Keras框架构建的卷积神经网络(CNN)实例,主要利用了Keras提供的MNIST数据集以及相关的层,如Dense、Dropout、Activation等,构建了一个具有两层卷积和两层全连接层的CNN模型。 ... [详细]
  • 手把手教你构建简易JSON解析器
    本文将带你深入了解JSON解析器的构建过程,通过实践掌握JSON解析的基本原理。适合所有对数据解析感兴趣的开发者。 ... [详细]
  • 本文深入探讨了Java注解的基本概念及其在现代Java开发中的应用。文章不仅介绍了如何创建和使用自定义注解,还详细讲解了如何利用反射机制解析注解,以及Java内建注解的使用场景。 ... [详细]
  • 微服务架构详解及其入门指南
    本文详细介绍了微服务的基本概念、发展历程、与传统架构的区别及优势,并探讨了适合采用微服务架构的场景。此外,文章还深入分析了几个主流的微服务开发框架,特别是Spring Cloud的组成和特点。 ... [详细]
  • Flutter入门指南:实现自动关闭的对话框与提示
    本文为Flutter系列教程的一部分,专注于讲解如何在Flutter应用中实现自动关闭的对话框和提示。通过具体的代码示例,帮助开发者掌握SnackBar、BottomSheet和Dialog的使用方法。 ... [详细]
  • 本文通过一个具体的用户管理项目,详细介绍如何使用Spring MVC框架进行开发。从用户实体类的设计到控制器的实现,再到视图层的展示,全面解析Spring MVC的核心功能与实现细节。 ... [详细]
  • 在 iOS 应用开发中,吸引用户的动画往往不是简单的线性运动。本文将探讨不同类型的动画曲线,如加速减速、弹性动画以及不规则路径动画等,并提供详细的实现方法。 ... [详细]
  • 本文详细探讨了UML用例图中的两种重要关系——包含关系和扩展关系,通过具体示例解析这两种关系的应用场景及其实现方式。 ... [详细]
  • 本文详细介绍了MySQL表分区的概念、类型及其在实际应用中的实施方法,特别是针对Zabbix数据库的优化策略。 ... [详细]
  • 本文探讨了如何在Symfony框架中正确设置日期时间字段的格式,以满足特定的显示需求。 ... [详细]
  • 转自:http:blog.sina.com.cnsblog_67419c420100vmkt.html 1.为什么要使用blocks将一个blocks作为函数或者方法的参数传递,可 ... [详细]
  • 本文总结了JavaScript的核心知识点和实用技巧,涵盖了变量声明、DOM操作、事件处理等重要方面。例如,通过`event.srcElement`获取触发事件的元素,并使用`alert`显示其HTML结构;利用`innerText`和`innerHTML`属性分别设置和获取文本内容及HTML内容。此外,还介绍了如何在表单中动态生成和操作``元素,以便更好地处理用户输入。这些技巧对于提升前端开发效率和代码质量具有重要意义。 ... [详细]
author-avatar
由来只有新人笑_谁能记得旧人哭
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有