当前位置: 首页 > news >正文

html免费网站模板带后台汽车网站建设的基本功能

html免费网站模板带后台,汽车网站建设的基本功能,网站模版 百度云,企业融资的10种方法前言#xff1a;Spring Boot提供了简单而强大的多数据源支持#xff0c;使得在应用程序中轻松使用和管理多个数据库变得非常容易。使用多数据源可以解决一些复杂的业务场景#xff0c;比如在一个应用中同时访问多个数据库#xff0c;或者在微服务架构中需要每个微服务连接自… 前言Spring Boot提供了简单而强大的多数据源支持使得在应用程序中轻松使用和管理多个数据库变得非常容易。使用多数据源可以解决一些复杂的业务场景比如在一个应用中同时访问多个数据库或者在微服务架构中需要每个微服务连接自己的数据库。 在Spring Boot和MyBatis中实现多数据源可以通过配置多个数据源和事务管理器来实现。以下是一个简单的步骤 1、添加依赖确保在pom.xml文件中添加Spring Boot和MyBatis的相关依赖。 例如  dependencies!-- Spring Boot Starter Web --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- Spring Boot Starter Data JPA --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-jpa/artifactId/dependency!-- MyBatis --dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactId/dependency!-- MySQL Connector --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependency /dependencies2、配置数据源 在application.properties或application.yml文件中配置多个数据源信息。 例如 # 第一个数据源 spring.datasource.first.urljdbc:mysql://localhost:3306/first_db spring.datasource.first.usernameusername1 spring.datasource.first.passwordpassword1 spring.datasource.first.driver-class-namecom.mysql.cj.jdbc.Driver# 第二个数据源 spring.datasource.second.urljdbc:mysql://localhost:3306/second_db spring.datasource.second.usernameusername2 spring.datasource.second.passwordpassword2 spring.datasource.second.driver-class-namecom.mysql.cj.jdbc.Driver3、配置数据源Bean import com.baomidou.mybatisplus.spring.boot.starter.SpringBootVFS; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.io.DefaultResourceLoader; import org.springframework.core.io.support.ResourcePatternResolver; import org.springframework.core.io.support.ResourcePatternUtils; import org.springframework.jdbc.datasource.DataSourceTransactionManager;import javax.sql.DataSource;/*** 配置连接*/ Configuration MapperScan(basePackages com.smoky.dao ,sqlSessionTemplateRef sqlSessionTemplateA ) public class MyBatisConfig {private Logger logger LoggerFactory.getLogger(MyBatisConfig.class);Value(${spring.datasource.datasourceA.driver-class-name})private String driverClassNameA;Bean(name dataSourceA)PrimaryConfigurationProperties(prefix spring.datasource.datasourceA)public DataSource dataSourceA() {return DataSourceBuilder.create().build();}PrimaryBean(name sqlSessionFactoryA)public SqlSessionFactory testSqlSessionFactoryA(Qualifier(dataSourceA) DataSource dataSource) throws Exception {ResourcePatternResolver patternResolver ResourcePatternUtils.getResourcePatternResolver(new DefaultResourceLoader());SqlSessionFactoryBean sqlSession new CDBSqlSessionFactoryBean();sqlSession.setDataSource(dataSource);String classPath;if (com.mysql.cj.jdbc.Driver.equals(driverClassNameA)) {classPath classpath*:mysql_mapper/*.xml;} else if (oracle.jdbc.driver.OracleDriver.equals(driverClassNameA)) {classPath classpath*:oracel_mapper/*.xml;} else if (com.ibm.db2.jcc.DB2Driver.equals(driverClassNameA)) {classPath classpath*:db2_mapper/*.xml;} else {throw new SystemException(SystemErrorEnum.SYSTEM_ERROR.getCode(), 不支持的数据库类型);}//根据实际情况添加视情况删除sqlSession.setVfs(SpringBootVFS.class);org.apache.ibatis.session.Configuration conf new org.apache.ibatis.session.Configuration();// 查询结果为map时不忽略空值conf.setCallSettersOnNulls(true);// 开启驼峰命名转换 conf.setMapUnderscoreToCamelCase(true);sqlSession.setConfiguration(conf);try {sqlSession.setMapperLocations(patternResolver.getResources(classPath));} catch (Exception e) {logger.error(e.getMessage());}return sqlSession.getObject();}PrimaryBean(name transactionManagerA)public DataSourceTransactionManager testTransactionManagerA(Qualifier(dataSourceA) DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}PrimaryBean(name sqlSessionTemplateA)public SqlSessionTemplate testSqlSessionTemplateA(Qualifier(sqlSessionFactoryA) SqlSessionFactory sqlSessionFactory) throws Exception {return new SqlSessionTemplate(sqlSessionFactory);}}   import com.baomidou.mybatisplus.spring.boot.starter.SpringBootVFS; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.io.DefaultResourceLoader; import org.springframework.core.io.support.ResourcePatternResolver; import org.springframework.core.io.support.ResourcePatternUtils; import org.springframework.jdbc.datasource.DataSourceTransactionManager;import javax.sql.DataSource;/*** 配置连接*/ Configuration MapperScan(basePackages com.smoky.skdao ,sqlSessionTemplateRef sqlSessionTemplateB )public class SKMybatisConfig {private Logger logger LoggerFactory.getLogger(SKMybatisConfig.class);Value(${spring.datasource.datasourceB.driver-class-name})private String driverClassNameB;Bean(name dataSourceB)ConfigurationProperties(prefix spring.datasource.datasourceB)public DataSource dataSourceB() {return DataSourceBuilder.create().build();}Bean(name sqlSessionFactoryB)public SqlSessionFactory testSqlSessionFactoryB(Qualifier(dataSourceB) DataSource dataSource) throws Exception {ResourcePatternResolver patternResolver ResourcePatternUtils.getResourcePatternResolver(new DefaultResourceLoader());SqlSessionFactoryBean sqlSession new CDBSqlSessionFactoryBean();sqlSession.setDataSource(dataSource);String classPath;if (com.mysql.cj.jdbc.Driver.equals(driverClassNameB)) {classPath classpath*:sk_mysql_mapper/*.xml;} else if (oracle.jdbc.driver.OracleDriver.equals(driverClassNameB)) {classPath classpath*:oracel_mapper/*.xml;} else if (com.ibm.db2.jcc.DB2Driver.equals(driverClassNameB)) {classPath classpath*:db2_mapper/*.xml;} else {throw new SystemException(SystemErrorEnum.SYSTEM_ERROR.getCode(), 不支持的数据库类型);}//根据实际情况添加视情况删除sqlSession.setVfs(SpringBootVFS.class);org.apache.ibatis.session.Configuration conf new org.apache.ibatis.session.Configuration();// 查询结果为map时不忽略空值conf.setCallSettersOnNulls(true);// 开启驼峰命名转换 seckill_idseckillIdconf.setMapUnderscoreToCamelCase(true);sqlSession.setConfiguration(conf);try {sqlSession.setMapperLocations(patternResolver.getResources(classPath));} catch (Exception e) {logger.error(e.getMessage());}return sqlSession.getObject();}Bean(name transactionManagerB)public DataSourceTransactionManager testTransactionManagerB(Qualifier(dataSourceB) DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}Bean(name sqlSessionTemplateB)public SqlSessionTemplate testSqlSessionTemplateB(Qualifier(sqlSessionFactoryB) SqlSessionFactory sqlSessionFactory) throws Exception {return new SqlSessionTemplate(sqlSessionFactory);}} 4、使用多数据源首先创建主数据源的UserMapper接口 package com.example.mapper.primary;import com.example.model.User;import java.util.List;public interface UserMapper {User getUserById(Long id);ListUser getAllUsers();void insertUser(User user);void updateUser(User user);void deleteUser(Long id); }主数据源Mapper XML文件 在src/main/resources/mapper/primary目录下创建主数据源的UserMapper.xml文件 !-- src/main/resources/mapper/primary/UserMapper.xml --mapper namespacecom.example.mapper.primary.UserMapper!-- 根据ID查询用户 --select idgetUserById resultTypecom.example.model.UserSELECT * FROM users_primary WHERE id #{id}/select!-- 查询所有用户 --select idgetAllUsers resultTypecom.example.model.UserSELECT * FROM users_primary/select!-- 插入用户 --insert idinsertUser parameterTypecom.example.model.UserINSERT INTO users_primary (username, email) VALUES (#{username}, #{email})/insert!-- 更新用户 --update idupdateUser parameterTypecom.example.model.UserUPDATE users_primary SET username #{username}, email #{email} WHERE id #{id}/update!-- 根据ID删除用户 --delete iddeleteUserDELETE FROM users_primary WHERE id #{id}/delete/mapper第二数据源Mapper接口接着创建第二数据源的UserMapper接口 package com.example.mapper.secondary;import com.example.model.User;import java.util.List;public interface UserMapper {User getUserById(Long id);ListUser getAllUsers();void insertUser(User user);void updateUser(User user);void deleteUser(Long id); }第二数据源Mapper XML文件在src/main/resources/mapper/secondary目录下创建第二数据源的UserMapper.xml文件 !-- src/main/resources/mapper/secondary/UserMapper.xml --mapper namespacecom.example.mapper.secondary.UserMapper!-- 根据ID查询用户 --select idgetUserById resultTypecom.example.model.UserSELECT * FROM users_secondary WHERE id #{id}/select!-- 查询所有用户 --select idgetAllUsers resultTypecom.example.model.UserSELECT * FROM users_secondary/select!-- 插入用户 --insert idinsertUser parameterTypecom.example.model.UserINSERT INTO users_secondary (username, email) VALUES (#{username}, #{email})/insert!-- 更新用户 --update idupdateUser parameterTypecom.example.model.UserUPDATE users_secondary SET username #{username}, email #{email} WHERE id #{id}/update!-- 根据ID删除用户 --delete iddeleteUserDELETE FROM users_secondary WHERE id #{id}/delete/mapper使用Mapper接口在需要使用数据访问的地方注入对应的UserMapper接口然后调用接口中定义的方法 Service public class UserService {private final UserMapper primaryUserMapper;private final UserMapper secondaryUserMapper;Autowiredpublic UserService(Qualifier(primaryUserMapper) UserMapper primaryUserMapper,Qualifier(secondaryUserMapper) UserMapper secondaryUserMapper) {this.primaryUserMapper primaryUserMapper;this.secondaryUserMapper secondaryUserMapper;}public User getPrimaryUserById(Long id) {return primaryUserMapper.getUserById(id);}public User getSecondaryUserById(Long id) {return secondaryUserMapper.getUserById(id);}// 其他业务方法... }在这个示例中UserMapper接口和XML文件分别针对主数据源和第二数据源进行了定义和配置。在UserService中通过Qualifier注解分别注入了主数据源和第二数据源的UserMapper使得在业务层可以方便地调用对应数据源的方法。需要确保主数据源和第二数据源的配置和连接信息都正确以便MyBatis能够正确地访问数据库。 总结 在Spring Boot应用程序中利用MyBatis实现多数据源的配置。这一技术的重要性在于对于复杂的应用场景如微服务架构或需要同时连接多个数据库的系统多数据源的支持成为了必备的功能。通过以下几个关键步骤我们成功地搭建了一个支持多数据源的Spring Boot应用 首先我们在pom.xml文件中引入了Spring Boot、MyBatis以及相应的数据库驱动依赖确保项目能够充分利用这些强大的框架。 其次通过在application.properties中配置多个数据源的连接信息我们为每个数据库建立了必要的基础设置。这包括数据库的URL、用户名、密码等信息。 接下来我们创建了DataSourceConfig类通过该类配置了每个数据源的DataSource Bean。这一步骤对于确保数据源的正确配置至关重要。 在MyBatis的配置方面我们使用了SqlSessionFactory和SqlSessionTemplate并通过MapperScan注解指定了Mapper接口的扫描路径。这样MyBatis能够正确地找到和关联到各个数据源的Mapper接口和XML文件。 最后为了实现事务管理我们创建了TransactionManagerConfig类为每个数据源配置了对应的事务管理器。这确保了在多数据源的环境下事务能够得到正确的管理和隔离。 通过以上步骤的完成我们不仅成功实现了多数据源的配置而且在MyBatis的Mapper接口和XML文件中清晰地定义了数据库操作。这种模块化的数据访问层设计使得代码更易维护、更具可读性。总的来说本文提供了一个全面而实用的指南帮助开发者们在Spring Boot应用中优雅地处理多数据源的场景充分发挥了Spring Boot和MyBatis的优势提高了应用的灵活性和可扩展性。
http://www.pierceye.com/news/435866/

相关文章:

  • 品牌设计公司品牌设计公司排名百家号优化上首页
  • 广州网站车管所深圳东门大厦
  • 门户网站 建设商 排名网站下载的视频怎么变成本地视频
  • 国外品牌设计网站中华始祖堂室内设计
  • 建设网站服务无极最新招聘
  • 广东省建设教育协会是什么网站揭东建设局网站
  • 那家专门做特卖的网站godaddy 搭建网站
  • 网络舆情处置的五个步骤新人学会seo
  • 网站开发要做什么在线网页转pdf
  • 购物网站开发教程中文如何调整wordpress页面的顺序
  • 网站网页设计制作教程成都外贸seo
  • 网站开发的资料设备英国搜索引擎
  • 什么样企业需要网站建设网络规划毕业设计
  • 广东制作公司网站和谐校园网站建设
  • 找潍坊做网站的h5用什么软件做的
  • 南宁网站推广费用0505网页制作与网站建设
  • 2345电视剧网站免费电子营业执照
  • 河北省沧州建设厅网站怎样保存网站资料 做证据
  • 网站同时做竞价和优化可以吗做网站游戏推广赚钱吗
  • 台州建站模板搭建上海远程教育网站设计与开发公司
  • 网站如何做淘客类似58同城分类信息网站开发
  • 网站源码文件安装教程苏州网站建设致宇
  • 免费注册域名网站知乎做网站做图电脑需要什么配置
  • 高埗做网站营销策略分析包括哪些内容
  • wordpress获取站点链接网站门户
  • flashxml网站模板网站后期培训机构全国排名
  • 企业网站设计网站页面设计中为什么要有优先级排列
  • 暗网是什么网站滨江区网站开发公司
  • 南京网站排名优化费用株洲58同城网站建设电话
  • 电子商务网站建设与管理理解上海网站推广企业