Spring+mybatis整合
之前都在做平台类的项目,因为最近有个海外项目要急着上线,但是微服务改造计划还没完完成,只能由我来先写一个过渡性的东西,供海外使用,计划使用springboot去做,但是因为要先做一个实验性的改造,先用spring+mybatis实现原有的功能以测试和hibernate的差别是否有很大的区别,重新构建sm框架时,遇到了很多坑,研究了一下午终于搞定。
首先是spring-mybatis的配置文件:
- <?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:context="http://www.springframework.org/schema/context"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop.xsd">
- <!-- 开启自动扫描 -->
- <context:component-scan base-package="com.travelsky.cupps.db.other"></context:component-scan>
- <!-- -->
- <aop:aspectj-autoproxy />
- <!-- 引入外部数据库的配置文件,location位置填写的是相对位置 -->
- <context:property-placeholder location="jdbc.properties"
- ignore-resource-not-found="false" local-override="false" />
- <!-- 配置数据库连接池 -->
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
- destroy-method="close">
- <property name="driverClassName" value="${jdbc.driver}" />
- <property name="url" value="${jdbc.url}" />
- <property name="username" value="${jdbc.username}" />
- <property name="password" value="${jdbc.password}" />
- <!-- 初始化连接大小 -->
- <property name="initialSize" value="${jdbc.initialSize}"></property>
- <!-- 连接池最大数量 -->
- <property name="maxActive" value="${jdbc.maxActive}"></property>
- <!-- 连接池最大空闲 -->
- <property name="maxIdle" value="${jdbc.maxIdle}"></property>
- <!-- 连接池最小空闲 -->
- <property name="minIdle" value="${jdbc.minIdle}"></property>
- <!-- 获取连接最大等待时间 -->
- <property name="maxWait" value="${jdbc.maxWait}"></property>
- </bean>
- <!-- ========================================针对myBatis的配置项============================== -->
- <!-- 配置SessionFactory -->
- <bean name="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <!-- 实例化sqlSessionFactory时需要使用上述配置好的数据源以及SQL映射文件 -->
- <property name="dataSource" ref="dataSource" />
- <property name="typeAliasesPackage" value="classpath:com/travelsky/cupps/db/other/entity"></property>
- <property name="mapperLocations" value="classpath:com/travelsky/cupps/db/other/mapper/*.xml" />
- </bean>
- <!-- 扫描mapper配置文件的地址 -->
- <!-- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <property name="basePackage" value="com.travelsky.cupps.db.other.mapper.*xml" />
- <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
- </bean> -->
- <!-- DAO接口所在包名,Spring会自动查找其下的类 Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring -->
- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <property name="basePackage" value="com.travelsky.cupps.db.other.mapper" />
- <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
- </bean>
- <!-- 配置Spring的事务管理器 -->
- <bean id="transactionManager"
- class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource" ref="dataSource" />
- </bean>
- </beans>
其次是jdbc.properties:
- jdbc.driver=oracle.jdbc.driver.OracleDriver
- jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:ORCL
- jdbc.username=root
- jdbc.password=root
- jdbc.initialSize=0
- jdbc.maxActive=20
- jdbc.maxIdle=20
- jdbc.minIdle=1
- jdbc.maxWait=60000
最后是pom.xml:
- 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- 2 <modelVersion>4.0.0</modelVersion>
- 3 <groupId>com.travelsky</groupId>
- 4 <artifactId>data</artifactId>
- 5 <version>1.0</version>
- 6 <properties>
- 7 <!-- spring版本号 -->
- 8 <spring.version>4.1.5.RELEASE</spring.version>
- 9 <!-- mybatis版本号 -->
- 10 <mybatis.version>3.2.6</mybatis.version>
- 11 <!-- log4j日志文件管理包版本 -->
- 12 <slf4j.version>1.7.7</slf4j.version>
- 13 <log4j.version>1.2.17</log4j.version>
- 14 </properties>
- 15 <dependencies>
- 16 <dependency>
- 17 <groupId>junit</groupId>
- 18 <artifactId>junit</artifactId>
- 19 <version>3.8.1</version>
- 20 <scope>test</scope>
- 21 </dependency>
- 22 <!-- springmvcjar包 -->
- 23 <!-- jacksonjar包 -->
- 24 <dependency>
- 25 <groupId>com.fasterxml.jackson.core</groupId>
- 26 <artifactId>jackson-databind</artifactId>
- 27 <version>2.5.0</version>
- 28 </dependency>
- 29 <dependency>
- 30 <groupId>com.fasterxml.jackson.core</groupId>
- 31 <artifactId>jackson-core</artifactId>
- 32 <version>2.5.0</version>
- 33 </dependency>
- 34
- 35 <!-- json -->
- 36 <dependency>
- 37 <groupId>net.sf.json-lib</groupId>
- 38 <artifactId>json-lib</artifactId>
- 39 <version>2.2.3</version>
- 40 <classifier>jdk15</classifier>
- 41 </dependency>
- 42
- 43 <dependency>
- 44 <groupId>com.fasterxml.jackson.core</groupId>
- 45 <artifactId>jackson-annotations</artifactId>
- 46 <version>2.5.0</version>
- 47 </dependency>
- 48 <dependency>
- 49 <groupId>org.springframework</groupId>
- 50 <artifactId>spring-core</artifactId>
- 51 <version>${spring.version}</version>
- 52 </dependency>
- 53
- 54 <dependency>
- 55 <groupId>org.springframework</groupId>
- 56 <artifactId>spring-web</artifactId>
- 57 <version>${spring.version}</version>
- 58 </dependency>
- 59 <dependency>
- 60 <groupId>org.springframework</groupId>
- 61 <artifactId>spring-orm</artifactId>
- 62 <version>${spring.version}</version>
- 63 </dependency>
- 64 <dependency>
- 65 <groupId>org.springframework</groupId>
- 66 <artifactId>spring-oxm</artifactId>
- 67 <version>${spring.version}</version>
- 68 </dependency>
- 69 <dependency>
- 70 <groupId>org.springframework</groupId>
- 71 <artifactId>spring-tx</artifactId>
- 72 <version>${spring.version}</version>
- 73 </dependency>
- 74
- 75 <dependency>
- 76 <groupId>org.springframework</groupId>
- 77 <artifactId>spring-jdbc</artifactId>
- 78 <version>${spring.version}</version>
- 79 </dependency>
- 80
- 81 <dependency>
- 82 <groupId>org.springframework</groupId>
- 83 <artifactId>spring-webmvc</artifactId>
- 84 <version>${spring.version}</version>
- 85 </dependency>
- 86 <dependency>
- 87 <groupId>org.springframework</groupId>
- 88 <artifactId>spring-aop</artifactId>
- 89 <version>${spring.version}</version>
- 90 </dependency>
- 91
- 92 <dependency>
- 93 <groupId>org.springframework</groupId>
- 94 <artifactId>spring-context</artifactId>
- 95 <version>${spring.version}</version>
- 96 </dependency>
- 97
- 98 <dependency>
- 99 <groupId>org.springframework</groupId>
- 100 <artifactId>spring-context-support</artifactId>
- 101 <version>${spring.version}</version>
- 102 </dependency>
- 103
- 104 <dependency>
- 105 <groupId>org.springframework</groupId>
- 106 <artifactId>spring-test</artifactId>
- 107 <version>${spring.version}</version>
- 108 </dependency>
- 109
- 110 <dependency>
- 111 <groupId>org.springframework</groupId>
- 112 <artifactId>spring-aspects</artifactId>
- 113 <version>${spring.version}</version>
- 114 </dependency>
- 115 <!-- mybatis jar包 -->
- 116 <dependency>
- 117 <groupId>org.mybatis</groupId>
- 118 <artifactId>mybatis</artifactId>
- 119 <version>${mybatis.version}</version>
- 120 </dependency>
- 121 <!-- mybatis/spring包 -->
- 122 <dependency>
- 123 <groupId>org.mybatis</groupId>
- 124 <artifactId>mybatis-spring</artifactId>
- 125 <version>1.2.2</version>
- 126 </dependency>
- 127 <!-- 其他jar -->
- 128 <!-- 导入oracle数据库链接jar包 -->
- 129 <dependency>
- 130 <groupId>com.travelsky.cupps</groupId>
- 131 <artifactId>oracle</artifactId>
- 132 <version>10.2.0.1.0</version>
- 133 </dependency>
- 134 <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
- 135 <dependency>
- 136 <groupId>commons-dbcp</groupId>
- 137 <artifactId>commons-dbcp</artifactId>
- 138 <version>1.2.2</version>
- 139 </dependency>
- 140 <!-- JSTL标签类 -->
- 141 <dependency>
- 142 <groupId>jstl</groupId>
- 143 <artifactId>jstl</artifactId>
- 144 <version>1.2</version>
- 145 </dependency>
- 146 <!-- 日志文件管理包 -->
- 147 <!-- log start -->
- 148 <dependency>
- 149 <groupId>log4j</groupId>
- 150 <artifactId>log4j</artifactId>
- 151 <version>${log4j.version}</version>
- 152 </dependency>
- 153
- 154 <dependency>
- 155 <groupId>org.slf4j</groupId>
- 156 <artifactId>slf4j-api</artifactId>
- 157 <version>${slf4j.version}</version>
- 158 </dependency>
- 159
- 160 <dependency>
- 161 <groupId>org.slf4j</groupId>
- 162 <artifactId>slf4j-log4j12</artifactId>
- 163 <version>${slf4j.version}</version>
- 164 </dependency>
- 165 <!-- 上传组件包 -->
- 166 <dependency>
- 167 <groupId>commons-fileupload</groupId>
- 168 <artifactId>commons-fileupload</artifactId>
- 169 <version>1.3.1</version>
- 170 </dependency>
- 171 <dependency>
- 172 <groupId>commons-io</groupId>
- 173 <artifactId>commons-io</artifactId>
- 174 <version>2.4</version>
- 175 </dependency>
- 176 <dependency>
- 177 <groupId>commons-codec</groupId>
- 178 <artifactId>commons-codec</artifactId>
- 179 <version>1.9</version>
- 180 </dependency>
- 181 <dependency>
- 182 <groupId>commons-codec</groupId>
- 183 <artifactId>commons-codec</artifactId>
- 184 <version>1.9</version>
- 185 </dependency>
- 186 <dependency>
- 187 <groupId>javax.servlet</groupId>
- 188 <artifactId>javax.servlet-api</artifactId>
- 189 <version>3.0.1</version>
- 190 <scope>provided</scope>
- 191 </dependency>
- 192 <dependency>
- 193 <groupId>javax.servlet.jsp</groupId>
- 194 <artifactId>jsp-api</artifactId>
- 195 <version>2.1</version>
- 196 <scope>provided</scope>
- 197 </dependency>
- 198
- 199 </dependencies>
- 200 </project>
由着三个文件就能将sm框架给搭建起来,当然,一些实体还得自己写啦