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框架给搭建起来,当然,一些实体还得自己写啦