spring-mybatis项目搭建(支持多数据源)

时间:2022-09-21 09:22:42

一、目录结构图

spring-mybatis项目搭建(支持多数据源)

2、配置文件内容

db.properties:

#oracle public
oracle.driverClass=oracle.jdbc.driver.OracleDriver
oracle.maxActive=14
oracle.initialSize=1
oracle.maxWait=120
oracle.maxIdle=14
oracle.minIdle=1
oracle.removeAbandoned=true
oracle.removeAbandonedTimeout=180
oracle.timeBetweenEvictionRunsMillis=60000
oracle.minEvictableIdleTimeMillis=1800000
oracle.connectionProperties=bigStringTryClob=true;clientEncoding=UTF-8;defaultRowPrefetch=50;serverEncoding=UTF-8 #oracle DB 注:oracle和mysql只是driverClass不一样,其他配置相同
oracle.jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:ORCL
oracle.jdbc.username=crh_snp
oracle.jdbc.passpword=cairenhui

freemarker.properties:

#freemarker settings
tag_syntax=auto_detect
template_update_delay=2
default_encoding=UTF-8
output_encoding=UTF-8
locale=zh_CN
date_format=yyyy-MM-dd
time_format=HH:mm:ss
datetime_format=yyyy-MM-dd HH:mm:ss

3、web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0"> <welcome-file-list>
<welcome-file>page/index.html</welcome-file>
<welcome-file>page/index.htm</welcome-file>
<welcome-file>page/index.jsp</welcome-file>
</welcome-file-list> <!-- 加载日志配置文件 -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:/config/log4j.properties</param-value>
</context-param>
<!-- 加载配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:/datasource/dbconfig.xml
</param-value>
</context-param> <listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <!-- 对客户端请求的静态资源如图片、JS文件等的请求交由默认的servlet进行处理 ,必须写在DispatcherServlet前面,否则会被spring拦截 -->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.gif</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.png</url-pattern>
</servlet-mapping> <servlet>
<servlet-name>config</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet> <servlet-mapping>
<servlet-name>config</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>config</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>config</servlet-name>
<url-pattern>*.img</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>config</servlet-name>
<url-pattern>*.json</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>config</servlet-name>
<url-pattern>*.ws</url-pattern>
</servlet-mapping> <!-- 统一工程编码过滤器 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <error-page>
<error-code>404</error-code>
<location>/404.htm</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/500.htm</location>
</error-page>
</web-app>

4、dbconfig.xml(数据库连接配置)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- 引入db.properties中属性 -->
<!-- 方式一 :单文件引入-->
<!-- <bean id="placeholderConfig"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:/config/db.properties</value>
</property>
</bean> -->
<!-- 方式二:多文件引入 -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="order" value="2" />
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="locations">
<list>
<value>classpath:config/freemarker.properties</value>
<value>classpath:config/db.properties</value>
<!-- 注意路径写法,上面写法要加classpath,路径前不能有/,此下面写法 -->
<value>/WEB-INF/test.properties</value>
</list>
</property>
</bean>
<bean id="dataSource" name="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${oracle.driverClass}" />
<property name="url" value="${oracle.jdbc.url}" />
<property name="username" value="${oracle.jdbc.username}" />
<property name="password" value="${oracle.jdbc.passpword}" />
<!-- 连接池最大使用连接数量 -->
<property name="maxActive" value="${oracle.maxActive}" />
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="${oracle.maxWait}" />
<property name="poolPreparedStatements" value="true" />
<property name="defaultAutoCommit" value="true" />
<!-- 连接池最大空闲 -->
<property name="maxIdle" value="${oracle.maxIdle}" />
<!-- 连接池最小空闲 -->
<property name="minIdle" value="${oracle.minIdle}" />
<property name="testOnBorrow" value="true" />
<property name="testWhileIdle" value="true" />
<property name="validationQuery" value="select 1 from dual" />
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="${oracle.timeBetweenEvictionRunsMillis}" />
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="${oracle.minEvictableIdleTimeMillis}" />
</bean> <!-- 配置mybatis固定的写法 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation">
<value>classpath:mybatis/mybatis-sqlmap.xml</value>
</property>
</bean> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory"></constructor-arg>
</bean> <!-- 配置事务管理器bean -->
<!-- TransactionManager -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean> <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
</bean> <!-- 事务控制代理抽象定义 -->
<bean id="transactionProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
abstract="true">
<!-- 为事务代理bean注入一个事物管理器 -->
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<!-- 定义事务传播属性 -->
<property name="transactionAttributes">
<props>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="release*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="find*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean> </beans>

5、mybatis-sqlmap.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="multipleResultSetsEnabled" value="true"/>
<setting name="useColumnLabel" value="true"/>
<setting name="useGeneratedKeys" value="false"/>
<setting name="autoMappingBehavior" value="PARTIAL"/>
<setting name="defaultExecutorType" value="SIMPLE"/>
<setting name="defaultStatementTimeout" value="25"/>
<setting name="safeRowBoundsEnabled" value="false"/>
<setting name="mapUnderscoreToCamelCase" value="false"/>
<setting name="localCacheScope" value="SESSION"/>
<setting name="jdbcTypeForNull" value="OTHER"/>
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>
<!-- 此配置是为bean起别名,有此配置后可在sql的xml文件中直接使用别名代替bean的全路径,如:resultType="User",所起别名不区分大小写 -->
<typeAliases>
<package name="com.test.model"/>
</typeAliases> <mappers>
<!-- sql文件配置方式一:指定文件路径位置,sql.xml文件namespace可以直接用dao名称,注意此时sql.xml文件要在resource目录下 -->
<!-- <mapper resource="mybatis/sqlmap/user/user.xml"/> -->
<!-- sql文件配置方式二:sql文件和dao接口放在同一个目录下,只需要配置sql.xml文件和接口所在包路径 ,但是sql。xml的namespace要是dao接口的完整路径-->
<package name="com.test.web.dao"/>
</mappers>
</configuration>

6、brokerDao.xml文件配置(sql.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.test.web.dao.broker.BrokerDao">
<resultMap type="brokerInfo" id="brokerResultMap">
<result property="user_id" column="user_id"/>
<result property="organ_flag" column="organ_flag"/>
<result property="user_name" column="user_name"/>
</resultMap> <select id="selectBroker" resultMap="brokerResultMap" parameterType="java.lang.String">
SELECT * FROM crh_user.brokerinfo WHERE user_id = #{user_id}
</select> </mapper>

7、java代码

TestController:

@Controller
@RequestMapping("test")
public class TestController { @Autowired
TestService testService; @RequestMapping("print")
public ModelAndView testController(HttpServletRequest req, HttpServletResponse resp, ModelAndView mav, String testId){
System.out.println("*****************controller come in******************");
mav.setViewName("index"); testService.testMethod(); return mav;
} }

TestServiceImpl:

@Service
public class TestServiceImpl implements TestService { @Autowired
BrokerDao brokerDao; public void testMethod() {
System.out.println("***********test service method *******");
brokerDao.testBroker();
System.out.println("***********test service end*********");
} }

BrokerDaoImpl:

@Repository
public class BrokerDaoImpl implements BrokerDao { @Autowired
private SqlSessionTemplate sqlSession; public void testBroker() {
String user_id = "100020";
Brokerinfo broker = (Brokerinfo)sqlSession.selectOne("com.test.web.dao.broker.BrokerDao.selectBroker", user_id);
System.out.println(broker);
}
}

spring-mybatis项目搭建(支持多数据源)的更多相关文章

  1. Spring &plus; Mybatis 项目实现动态切换数据源

    项目背景:项目开发中数据库使用了读写分离,所有查询语句走从库,除此之外走主库. 最简单的办法其实就是建两个包,把之前数据源那一套配置copy一份,指向另外的包,但是这样扩展很有限,所有采用下面的办法. ...

  2. Spring MVC &plus; Mybatis项目搭建

    1.参考<Java Spring MVC项目搭建(一)——Spring MVC框架集成>配置spring mvc需要的jar包及eclipse配置(主要是针对servlet-api.jar ...

  3. mybatis学习笔记(五) -- maven&plus;spring&plus;mybatis从零开始搭建整合详细过程(附demo和搭建过程遇到的问题解决方法)

    文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文 ...

  4. mybatis学习笔记(六) -- maven&plus;spring&plus;mybatis从零开始搭建整合详细过程(下)

    继续 mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上) 五.使用监听器启动Spring容器 1.修改pom.xml文件,添加Spring-we ...

  5. Spring&plus;Mybatis&plus;Mysql搭建分布式数据库访问框架

    一.前言 用Java开发企业应用软件, 经常会采用Spring+MyBatis+Mysql搭建数据库框架.如果数据量很大,一个MYSQL库存储数据访问效率很低,往往会采用分库存储管理的方式.本文讲述如 ...

  6. Spring boot项目搭建及简单实例

    Spring boot项目搭建 Spring Boot 概述 Build Anything with Spring Boot:Spring Boot is the starting point for ...

  7. Spring MVC 项目搭建 -6- spring security 使用自定义Filter实现验证扩展资源验证,使用数据库进行配置

    Spring MVC 项目搭建 -6- spring security使用自定义Filter实现验证扩展url验证,使用数据库进行配置 实现的主要流程 1.创建一个Filter 继承 Abstract ...

  8. Spring MVC 项目搭建 -5- spring security 使用数据库进行验证

    Spring MVC 项目搭建 -5- spring security 使用数据库进行验证 1.创建数据表格(这里使用的是mysql) CREATE TABLE security_role ( id ...

  9. Spring MVC 项目搭建 -4- spring security-添加自定义登录页面

    Spring MVC 项目搭建 -4- spring security-添加自定义登录页面 修改配置文件 <!--spring-sample-security.xml--> <!-- ...

  10. Spring MVC 项目搭建 -3- 快速 添加 spring security

    Spring MVC 项目搭建 -3- 快速 添加 spring security 1.添加 spring-sample-security.xml <!-- 简单的安全检验实现 --> & ...

随机推荐

  1. Struts2,Spring&comma; Hibernate三大框架SSH的整合步骤

    整合步骤 创建web工程 引入相应的jar包 整合spring和hibernate框架 编写实体类pojo和hbm.xml文件 编写bean-base.xml文件 <!-- 1) 连接池实例 - ...

  2. MySQL建立索引的注意事项

    对于大数据量的表格,尤其是百万行以上的数据表,一定要对其建立索引,否则查询速度极慢.(参考后面的测试结果)建立索引时需注意: MySQL的索引有两种:单列索引(即在某一列上建索引).多列组合索引(即在 ...

  3. perl 学习杂项笔记

    ### 由于perl 语法属于很*的那种, 建议出现错误的时候打开 -w 或者使用 -Mdiagnositics 试一下 ### 如何调试 perl程序 http://www.ibm.com/dev ...

  4. JavaScript escape encodeURI encodeURIComponent&lpar;&rpar; 函数

    总结一下: 1.encodeURI(),和encodeURIComponent()是对字符进行编码. 2.decodeURI(),和decodeURIComponent()是对相应编码过的字符进行解码 ...

  5. asp&period;net中json格式化及在js中解析json

    类: public class UploadDocumentItem { public UploadDocumentItem() { } public string DocMuid { get; se ...

  6. C&num; Json数据反序列化为Dictionary并根据关键字获取指定值1

    Json数据: { "dataSet": { "header": { "returnCode": "0", " ...

  7. 用Web抓包分析工具Livepool 实现本地替换开发

    这是官方的介绍: LivePool 是一个基于 NodeJS,类似 Fiddler 支持抓包和本地替换的 Web 开发调试工具,是 Tencent AlloyTeam 在开发实践过程总结出的一套的便捷 ...

  8. Elasticsearch介绍,一些概念的笔记

    Elasticsearch,分布式,高性能,高可用,可伸缩的搜索和分析系统 什么是搜索? 如果用数据库做搜索会怎么样? 什么是全文检索和Lucene? 什么是Elasticsearch? Elasti ...

  9. Linux包管理器

    按Linux系统分类 Redhat系列:Redhat(本身就是Centos).Centos.Fedora等,采用Dpkg包管理器 Debian系列:Debian.Ubuntu等,使用RPM包管理器 R ...

  10. AR 前言

    LBS 基于位置的服务,是指通过电信移动运营商的无线电通讯网络或外部定位方式,获取移动终端用户的位置信息,在GIS平台的支持下,为用户提供相应服务的一种增值业务. 它包括两层含义:首先是确定移动设备或 ...