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

珠海市网站开发公司wordpress 打赏

珠海市网站开发公司,wordpress 打赏,网站建设的一般过程包括哪些内容,网站寄生虫怎么做一、简介MybatisPlus中引用多数据库时#xff0c;传统的配置就失效了#xff0c;需要单独写配置来实现#xff0c;下面就说一下具体应该如何操作二、引入MybatisPlus多数据源配置还是先看一下我的项目结构#xff0c;Model是单独的模块#xff0c;请自行创建1、创建一个Ma…一、简介MybatisPlus中引用多数据库时传统的配置就失效了需要单独写配置来实现下面就说一下具体应该如何操作二、引入MybatisPlus多数据源配置还是先看一下我的项目结构Model是单独的模块请自行创建1、创建一个Maven项目修改pom.xml文件增加对spring boot、mybatis plus、druid、mysql connector的引用org.springframework.bootspring-boot-dependencies2.0.3.RELEASEpomimportorg.springframework.bootspring-boot-starter-webcom.alibabadruid-spring-boot-starter1.1.10mysqlmysql-connector-java5.1.9com.baomidoumybatis-plus-boot-starter2.32、创建resources文件夹并创建application.yml文件增加以下配置此处不需要写mybatis plus的配置了因为多数据源时这里的mybatis plus会失效具体原因还没找到#设置提供的服务名spring:application:name: javademo-tyh-service-hotel#配置数据库datasource:type: com.alibaba.druid.pool.DruidDataSourcedb1:url: jdbc:mysql://10.11.12.237:3306/db_test?useUnicodetruecharacterEncodingutf8username: rootpassword: rootdriver-class-name: com.mysql.jdbc.Driverdb2:url: jdbc:mysql://10.11.12.237:3306/tyh_test?useUnicodetruecharacterEncodingutf8username: rootpassword: rootdriver-class-name: com.mysql.jdbc.Driver#设置自己启动的端口server:port:120003、在resources文件夹下创建mapper文件夹在其内部创建两个数据库的两张表的mapper.xml文件分别编写一个自定义方法BaseInfoMapper.xmlselect count(*) from base_info;UserInfoMapper.xmlselect count(*) from user_info;4、打开main方法所在的类并修改为如下代码importorg.mybatis.spring.annotation.MapperScan;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplicationMapperScan(javademo.tyh.service.hotel.mapper)//标记扫描的mapper位置public classAppServiceHotel{public static voidmain( String[] args ){SpringApplication.run(AppServiceHotel.class, args);}}5、创建config文件夹存放mybatis plus的相关配置此内部的类很多都摘自官网是按照他的方式进行实现的创建枚举DBTypeEnum/*** 多数据源枚举*/public enumDBTypeEnum {db1(db1), db2(db2);privateString value;DBTypeEnum(String value) {this.value value;}publicString getValue() {returnvalue;}}创建数据源操作类DbContextHolderpublic classDbContextHolder {private static final ThreadLocal contextHolder new ThreadLocal();/*** 设置数据源*paramdbTypeEnum*/public static voidsetDbType(DBTypeEnum dbTypeEnum) {contextHolder.set(dbTypeEnum.getValue());}/*** 取得当前数据源*return*/public staticString getDbType() {return(String) contextHolder.get();}/*** 清除上下文数据*/public static voidclearDbType() {contextHolder.remove();}}创建spring的DataSource抽象类 DynamicDataSourceimportorg.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;/** 扩展Spring的AbstractRoutingDataSource抽象类实现动态数据源。* AbstractRoutingDataSource中的抽象方法determineCurrentLookupKey是实现数据源的route的核心* 这里对该方法进行Override。 【上下文DbContextHolder为一线程安全的ThreadLocal】*/public class DynamicDataSource extendsAbstractRoutingDataSource {/*** 取得当前使用哪个数据源*return*/OverrideprotectedObject determineCurrentLookupKey(){returnDbContextHolder.getDbType();}}创建MybatisPlusConfig配置类importcom.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;importcom.baomidou.mybatisplus.MybatisConfiguration;importcom.baomidou.mybatisplus.entity.GlobalConfiguration;importcom.baomidou.mybatisplus.mapper.LogicSqlInjector;importcom.baomidou.mybatisplus.plugins.PaginationInterceptor;importcom.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean;importorg.apache.ibatis.plugin.Interceptor;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.type.JdbcType;importorg.springframework.beans.factory.annotation.Qualifier;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.context.annotation.Primary;importorg.springframework.core.io.support.PathMatchingResourcePatternResolver;importjavax.sql.DataSource;importjava.util.HashMap;importjava.util.Map;/*** MybatisPlus配置*/Configurationpublic classMybatisPlusConfig {//分页拦截器BeanpublicPaginationInterceptor paginationInterceptor() {return newPaginationInterceptor();}//定义db1Bean(name db1)ConfigurationProperties(prefix spring.datasource.db1)//与配置文件中的层次结构相同publicDataSource db1() {returnDruidDataSourceBuilder.create().build();}//定义db2Bean(name db2)ConfigurationProperties(prefix spring.datasource.db2)//与配置文件中的层次结构相同publicDataSource db2() {returnDruidDataSourceBuilder.create().build();}/*** 动态数据源配置*return*/BeanPrimarypublic DataSource multipleDataSource(Qualifier(db1) DataSource db1, Qualifier(db2) DataSource db2) {DynamicDataSource dynamicDataSource newDynamicDataSource();Map targetDataSources new HashMap();targetDataSources.put(DBTypeEnum.db1.getValue(), db1);targetDataSources.put(DBTypeEnum.db2.getValue(), db2);dynamicDataSource.setTargetDataSources(targetDataSources);dynamicDataSource.setDefaultTargetDataSource(db1);returndynamicDataSource;}Bean(sqlSessionFactory)public SqlSessionFactory sqlSessionFactory() throwsException {//***导入MybatisSqlSession配置***MybatisSqlSessionFactoryBean sqlSessionFactory newMybatisSqlSessionFactoryBean();//指明数据源sqlSessionFactory.setDataSource(multipleDataSource(db1(), db2()));//指明mapper.xml位置(配置文件中指明的xml位置会失效用此方式代替具体原因未知)sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(classpath*:/mapper/**Mapper.xml));//指明实体扫描(多个package用逗号或者分号分隔)sqlSessionFactory.setTypeAliasesPackage(javademo.tyh.model.base;javademo.tyh.model.hotel);//***导入Mybatis配置***MybatisConfiguration configuration newMybatisConfiguration();configuration.setJdbcTypeForNull(JdbcType.NULL);configuration.setMapUnderscoreToCamelCase(true);configuration.setCacheEnabled(false);sqlSessionFactory.setConfiguration(configuration);sqlSessionFactory.setPlugins(newInterceptor[]{paginationInterceptor()});//***导入全局配置***sqlSessionFactory.setGlobalConfig(globalConfiguration());returnsqlSessionFactory.getObject();}/*** 在代码中配置MybatisPlus替换掉application.yml中的配置*return*/BeanpublicGlobalConfiguration globalConfiguration() {GlobalConfiguration conf new GlobalConfiguration(newLogicSqlInjector());//主键类型 0:数据库ID自增, 1:用户输入ID,2:全局唯一ID (数字类型唯一ID), 3:全局唯一ID UUIDconf.setIdType(0);//字段策略(拼接sql时用于判断属性值是否拼接) 0:忽略判断,1:非NULL判断,2:非空判断conf.setFieldStrategy(2);//驼峰下划线转换含查询column及返回column(column下划线命名create_time返回java实体是驼峰命名createTime开启后自动转换否则保留原样)conf.setDbColumnUnderline(true);//是否动态刷新mapperconf.setRefresh(true);returnconf;}}6、创建mapper文件夹用于存放于xml对应的mapper接口BaseInfoMapperimportcom.baomidou.mybatisplus.mapper.BaseMapper;importjavademo.tyh.model.hotel.BaseInfoModel;importorg.springframework.stereotype.Component;Componentpublic interface BaseInfoMapper extends BaseMapper{//自定义方法intlistCount();}UserInfoMapperimportcom.baomidou.mybatisplus.mapper.BaseMapper;importjavademo.tyh.model.hotel.UserInfoModel;importorg.springframework.stereotype.Component;Componentpublic interface UserInfoMapper extends BaseMapper{//自定义方法intlistCount();}7、创建service文件夹用于存放业务逻辑类importjavademo.tyh.model.hotel.BaseInfoModel;importjavademo.tyh.model.hotel.UserInfoModel;importjavademo.tyh.service.hotel.config.DBTypeEnum;importjavademo.tyh.service.hotel.config.DbContextHolder;importjavademo.tyh.service.hotel.mapper.BaseInfoMapper;importjavademo.tyh.service.hotel.mapper.UserInfoMapper;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;Servicepublic classHotelService {AutowiredBaseInfoMapper baseMapper;AutowiredUserInfoMapper userMapper;public voidtestDynamicDb() {//使用db1DbContextHolder.setDbType(DBTypeEnum.db1);BaseInfoModel baseModel baseMapper.selectById(1);int baseCount baseMapper.listCount();System.out.println(db1 baseModel.getNickname());//使用db2DbContextHolder.setDbType(DBTypeEnum.db2);UserInfoModel userModel userMapper.selectById(1);int userCount userMapper.listCount();System.out.println(db2 userModel.getUsername());}}8、创建controller文件夹编写一个controller和action用于测试importjavademo.tyh.service.hotel.service.HotelService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.ResponseBody;ControllerRequestMapping(/hotel)public classHotelController {AutowiredHotelService service;ResponseBodyRequestMapping(/test)public voidtest() {service.testDynamicDb();}}9、创建自己的实体Modelget/set方法自己生成吧BaseInfoModelimportcom.baomidou.mybatisplus.annotations.TableName;importjava.time.LocalDateTime;TableName(base_info)public classBaseInfoModel {private intid;privateString nickname;privateLocalDateTime updateTime;}UserInfoModelimportcom.baomidou.mybatisplus.annotations.TableName;importjava.time.LocalDateTime;TableName(user_info)public classUserInfoModel {private intid;privateString username;privateString password;private intsex;private intage;privateLocalDateTime createTime;}OK至此Mybatis Plus多数据源配置Demo就完成了可以运行http://localhost:12000/hotel/test看一下console控制台会得到以下输出db1和db2就切换成功了
http://www.zqtcl.cn/news/743266/

相关文章:

  • 江西省城乡和住房建设部网站google play应用商店
  • 网站前台设计过程泰安千橙网络科技有限公司
  • 可以做来电名片的网站网站开发频道构架
  • 网站备案没通过不了宣传片拍摄的意义
  • 专业提供网站建设服务包括做解析视频网站违法莫
  • 天津工程建设协会网站wordpress 自由评论
  • 南同网站建设hr系统管理软件排名
  • 水果网店网站建设策划书做企业形象网站
  • 小清新博客网站软件公司有哪些部门
  • 企业网站托管一年多少钱想学电商运营在哪里学
  • 网站建设自评报告手机电商平台怎么做的
  • 安阳网站建设优化免费的免抠图素材网站
  • 网站主机有什么用seo网站课程
  • 网站关键词优化软件网站的二次开发
  • 网站建设技术服务费怎么入账杭州网站推广与优化
  • 咨询类网站建设方案书重庆360网络推广
  • 简单网站模板下载wordpress调用数据库字段
  • 万网空间最多放几个网站好的网站首页的特点
  • .net做网站安全吗wordpress取消邮件验证
  • 沈阳做网站推广唐山网站怎么做seo
  • 网站备案说主体已注销刷关键词指数
  • 学做网站教学百度网盘动软代码生成器 做网站
  • 长辛店网站建设手机评测网站
  • 网站建设公司选哪个好软件开发
  • 隐形眼镜网站开发的经济效益莘县网站开发
  • 开创集团网站建设如何在学校网站上做链接
  • 上海优秀网站设计百度投诉中心人工电话号码
  • 卖建材的网站有哪些跨境电商工具类产品的网站
  • 做毕业网站的周记网站开发项目书
  • 门户网站价格仿站工具下载后咋做网站