`

Maven+Struts2+MyBatis+Spring搭建教程

 
阅读更多

Maven+Struts2+MyBatis+Spring搭建教程

教程目标

在MyEclipse中搭建Struts2+MyBatis+Spring环境,用Maven管理项目,利用mybatis-gernerator插件生成部分代码

附带目标:

struts2的自定义拦截器和国际化,mybatis-spring自动装配Dao,mybatis-gernerator的配置

 

先贴下搭建成功后项目的结构图,方便理解:

 


1、新建web project,add maven spport:


2、编辑已经生成的pom.xml:pom文件不是一口气写完的,而是随着添加struts、mybatis和spring等特性以后才逐渐完成的,我在这里就把完成以后的贴在这里了

 

 

Xml代码 复制代码 收藏代码
  1. <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>MybatisSpringStrut2</groupId>
  5. <artifactId>MybatisSpringStrut2</artifactId>
  6. <version>0.0.1-SNAPSHOT</version>
  7. <packaging>war</packaging>
  8. <name>Mybatis+Spring+Strut2集成示例</name>
  9. <developers>
  10. <developer>
  11. <name>Sam</name>
  12. <email>sanlai_lee@foxmail.com</email>
  13. </developer>
  14. </developers>
  15. <properties>
  16. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  17. <!-- 下面这些定义的属性在mybatis-generator.xml文件中引用 -->
  18. <classPathEntry.location>${basedir}/WebRoot/WEB-INF/lib/mysql-connector-java-5.1.18.jar</classPathEntry.location>
  19. <jdbc.driverClass>com.mysql.jdbc.Driver</jdbc.driverClass>
  20. <jdbc.connectionURL>jdbc:mysql://localhost:3306/test?generateSimpleParameterMetadata=true</jdbc.connectionURL>
  21. <jdbc.userId>root</jdbc.userId>
  22. <jdbc.password>1120</jdbc.password>
  23. <model.target.dir>${basedir}/src/java</model.target.dir>
  24. <mappers.target.dir>${basedir}/src/config</mappers.target.dir>
  25. <client.target.dir>${basedir}/src/java</client.target.dir>
  26. </properties>
  27. <!-- 依赖包 -->
  28. <dependencies>
  29. <dependency>
  30. <groupId>org.glassfish</groupId>
  31. <artifactId>bean-validator</artifactId>
  32. <version>3.0-JBoss-4.0.2</version>
  33. </dependency>
  34. <dependency>
  35. <groupId>org.glassfish</groupId>
  36. <artifactId>javax.annotation</artifactId>
  37. <version>3.0.1</version>
  38. </dependency>
  39. <dependency>
  40. <groupId>org.glassfish</groupId>
  41. <artifactId>javax.ejb</artifactId>
  42. <version>3.0.1</version>
  43. </dependency>
  44. <dependency>
  45. <groupId>org.glassfish</groupId>
  46. <artifactId>javax.enterprise.deploy</artifactId>
  47. <version>3.0.1</version>
  48. </dependency>
  49. <dependency>
  50. <groupId>org.glassfish</groupId>
  51. <artifactId>javax.jms</artifactId>
  52. <version>3.0.1</version>
  53. </dependency>
  54. <dependency>
  55. <groupId>org.glassfish</groupId>
  56. <artifactId>javax.management.j2ee</artifactId>
  57. <version>3.0.1</version>
  58. </dependency>
  59. <dependency>
  60. <groupId>org.eclipse.persistence</groupId>
  61. <artifactId>javax.persistence</artifactId>
  62. <version>2.0.0</version>
  63. </dependency>
  64. <dependency>
  65. <groupId>org.glassfish</groupId>
  66. <artifactId>javax.resource</artifactId>
  67. <version>3.0.1</version>
  68. </dependency>
  69. <dependency>
  70. <groupId>org.glassfish</groupId>
  71. <artifactId>javax.security.auth.message</artifactId>
  72. <version>3.0.1</version>
  73. </dependency>
  74. <dependency>
  75. <groupId>org.glassfish</groupId>
  76. <artifactId>javax.security.jacc</artifactId>
  77. <version>3.0.1</version>
  78. </dependency>
  79. <dependency>
  80. <groupId>org.glassfish</groupId>
  81. <artifactId>javax.servlet</artifactId>
  82. <version>3.0.1</version>
  83. <scope>provided</scope>
  84. </dependency>
  85. <dependency>
  86. <groupId>org.glassfish</groupId>
  87. <artifactId>javax.servlet.jsp</artifactId>
  88. <version>3.0.1</version>
  89. <scope>provided</scope>
  90. </dependency>
  91. <dependency>
  92. <groupId>org.glassfish</groupId>
  93. <artifactId>javax.servlet.jsp.jstl</artifactId>
  94. <version>3.0.1</version>
  95. </dependency>
  96. <dependency>
  97. <groupId>org.glassfish</groupId>
  98. <artifactId>javax.transaction</artifactId>
  99. <version>3.0.1</version>
  100. </dependency>
  101. <dependency>
  102. <groupId>javax.xml.bind</groupId>
  103. <artifactId>jaxb-api-osgi</artifactId>
  104. <version>2.2.1</version>
  105. </dependency>
  106. <dependency>
  107. <groupId>javax.ws.rs</groupId>
  108. <artifactId>jsr311-api</artifactId>
  109. <version>1.1.1</version>
  110. </dependency>
  111. <dependency>
  112. <groupId>javax.mail</groupId>
  113. <artifactId>mail</artifactId>
  114. <version>1.4.3</version>
  115. </dependency>
  116. <dependency>
  117. <groupId>javax.xml</groupId>
  118. <artifactId>webservices-api-osgi</artifactId>
  119. <version>2.0.1</version>
  120. </dependency>
  121. <dependency>
  122. <groupId>org.jboss.weld</groupId>
  123. <artifactId>weld-osgi-bundle</artifactId>
  124. <version>1.0.1-SP3</version>
  125. </dependency>
  126. <dependency>
  127. <groupId>log4j</groupId>
  128. <artifactId>log4j</artifactId>
  129. <version>1.2.15</version>
  130. </dependency>
  131. <dependency>
  132. <groupId>mysql</groupId>
  133. <artifactId>mysql-connector-java</artifactId>
  134. <version>5.1.18</version>
  135. </dependency>
  136. <dependency>
  137. <groupId>org.mybatis</groupId>
  138. <artifactId>mybatis</artifactId>
  139. <version>3.0.6</version>
  140. </dependency>
  141. <dependency>
  142. <groupId>org.mybatis</groupId>
  143. <artifactId>mybatis-spring</artifactId>
  144. <version>1.0.2</version>
  145. </dependency>
  146. <dependency>
  147. <groupId>xerces</groupId>
  148. <artifactId>xmlParserAPIs</artifactId>
  149. <version>2.6.2</version>
  150. </dependency>
  151. <dependency>
  152. <groupId>dom4j</groupId>
  153. <artifactId>dom4j</artifactId>
  154. <version>1.6.1</version>
  155. </dependency>
  156. <dependency>
  157. <groupId>com.sun.mail</groupId>
  158. <artifactId>pop3</artifactId>
  159. <version>1.4.4</version>
  160. </dependency>
  161. <dependency>
  162. <groupId>com.sun.mail</groupId>
  163. <artifactId>smtp</artifactId>
  164. <version>1.4.4</version>
  165. </dependency>
  166. <dependency>
  167. <groupId>cglib</groupId>
  168. <artifactId>cglib</artifactId>
  169. <version>2.2.2</version>
  170. <type>jar</type>
  171. </dependency>
  172. <dependency>
  173. <groupId>org.apache.struts</groupId>
  174. <artifactId>struts2-core</artifactId>
  175. <version>2.2.3.1</version>
  176. </dependency>
  177. <dependency>
  178. <groupId>org.apache.struts</groupId>
  179. <artifactId>struts2-json-plugin</artifactId>
  180. <version>2.2.3.1</version>
  181. </dependency>
  182. <dependency>
  183. <groupId>org.apache.struts</groupId>
  184. <artifactId>struts2-config-browser-plugin</artifactId>
  185. <version>2.2.3.1</version>
  186. </dependency>
  187. <dependency>
  188. <groupId>javax.servlet</groupId>
  189. <artifactId>servlet-api</artifactId>
  190. <version>2.5</version>
  191. <scope>provided</scope>
  192. </dependency>
  193. <dependency>
  194. <groupId>javax.servlet.jsp</groupId>
  195. <artifactId>jsp-api</artifactId>
  196. <version>2.1</version>
  197. <scope>provided</scope>
  198. </dependency>
  199. <dependency>
  200. <groupId>org.apache.struts</groupId>
  201. <artifactId>struts2-spring-plugin</artifactId>
  202. <version>2.2.3.1</version>
  203. </dependency>
  204. <dependency>
  205. <groupId>commons-logging</groupId>
  206. <artifactId>commons-logging</artifactId>
  207. <version>1.1.1</version>
  208. </dependency>
  209. <dependency>
  210. <groupId>commons-dbcp</groupId>
  211. <artifactId>commons-dbcp</artifactId>
  212. <version>1.4</version>
  213. </dependency>
  214. <dependency>
  215. <groupId>c3p0</groupId>
  216. <artifactId>c3p0</artifactId>
  217. <version>0.9.1.2</version>
  218. </dependency>
  219. <dependency>
  220. <groupId>org.springframework</groupId>
  221. <artifactId>spring-core</artifactId>
  222. <version>3.0.6.RELEASE</version>
  223. </dependency>
  224. <dependency>
  225. <groupId>org.springframework</groupId>
  226. <artifactId>spring-web</artifactId>
  227. <version>3.0.6.RELEASE</version>
  228. </dependency>
  229. <dependency>
  230. <groupId>org.springframework</groupId>
  231. <artifactId>spring-jdbc</artifactId>
  232. <version>3.0.6.RELEASE</version>
  233. </dependency>
  234. <dependency>
  235. <groupId>org.springframework</groupId>
  236. <artifactId>spring-beans</artifactId>
  237. <version>3.0.6.RELEASE</version>
  238. </dependency>
  239. <dependency>
  240. <groupId>org.springframework</groupId>
  241. <artifactId>spring-context</artifactId>
  242. <version>3.0.6.RELEASE</version>
  243. </dependency>
  244. <dependency>
  245. <groupId>org.springframework</groupId>
  246. <artifactId>spring-tx</artifactId>
  247. <version>3.0.6.RELEASE</version>
  248. </dependency>
  249. <dependency>
  250. <groupId>org.springframework</groupId>
  251. <artifactId>spring-asm</artifactId>
  252. <version>3.0.6.RELEASE</version>
  253. </dependency>
  254. <dependency>
  255. <groupId>org.springframework</groupId>
  256. <artifactId>spring-aop</artifactId>
  257. <version>3.0.6.RELEASE</version>
  258. </dependency>
  259. <dependency>
  260. <groupId>org.springframework</groupId>
  261. <artifactId>spring-expression</artifactId>
  262. <version>3.0.6.RELEASE</version>
  263. </dependency>
  264. <dependency>
  265. <groupId>commons-pool</groupId>
  266. <artifactId>commons-pool</artifactId>
  267. <version>1.5.6</version>
  268. </dependency>
  269. </dependencies>
  270. <build>
  271. <!-- 源文件夹位置定义 -->
  272. <sourceDirectory>${basedir}/src/java,${basedir}/src/config</sourceDirectory>
  273. <!-- 输出文件夹位置定义 -->
  274. <outputDirectory>${basedir}/WebRoot/WEB-INF/classes</outputDirectory>
  275. <!-- 资源文件位置定义 -->
  276. <resources>
  277. <resource>
  278. <targetPath>${project.build.outputDirectory}</targetPath>
  279. <directory>${project.build.sourceDirectory}</directory>
  280. <excludes>
  281. <exclude>**/*.java</exclude>
  282. </excludes>
  283. </resource>
  284. <resource>
  285. <directory>${project.build.sourceDirectory}</directory>
  286. <includes>
  287. <include>**/*.xml,**/*.properties</include>
  288. </includes>
  289. </resource>
  290. </resources>
  291. <!-- war包的最终名字格式定义 -->
  292. <finalName>${project.artifactId}-${project.version}</finalName>
  293. <!-- 插件定义 -->
  294. <plugins>
  295. <!-- 打包插件 -->
  296. <plugin>
  297. <groupId>org.apache.maven.plugins</groupId>
  298. <artifactId>maven-war-plugin</artifactId>
  299. <version>2.1.1</version>
  300. <configuration>
  301. <webappDirectory>${basedir}/WebRoot</webappDirectory>
  302. <warSourceDirectory>${basedir}/WebRoot</warSourceDirectory>
  303. <outputDirectory>${basedir}/target/output</outputDirectory>
  304. </configuration>
  305. </plugin>
  306. <!-- 编译插件 -->
  307. <plugin>
  308. <groupId>org.apache.maven.plugins</groupId>
  309. <artifactId>maven-compiler-plugin</artifactId>
  310. <version>2.3.2</version>
  311. <configuration>
  312. <source>1.6</source>
  313. <target>1.6</target>
  314. </configuration>
  315. </plugin>
  316. <!-- mybatis的代码生成插件 -->
  317. <plugin>
  318. <groupId>org.mybatis.generator</groupId>
  319. <artifactId>mybatis-generator-maven-plugin</artifactId>
  320. <version>1.3.1</version>
  321. <configuration>
  322. <configurationFile>${basedir}/src/config/mybatis-generator.xml</configurationFile>
  323. <verbose>true</verbose>
  324. <overwrite>true</overwrite>
  325. </configuration>
  326. <executions>
  327. <execution>
  328. <id>Generate MyBatis Artifacts</id>
  329. <goals>
  330. <goal>generate</goal>
  331. </goals>
  332. </execution>
  333. </executions>
  334. </plugin>
  335. </plugins>
  336. </build>
  337. </project>
<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">
	<modelVersion>4.0.0</modelVersion>
	<groupId>MybatisSpringStrut2</groupId>
	<artifactId>MybatisSpringStrut2</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<name>Mybatis+Spring+Strut2集成示例</name>
	<developers>
		<developer>
			<name>Sam</name>
			<email>sanlai_lee@foxmail.com</email>
		</developer>
	</developers>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<!-- 下面这些定义的属性在mybatis-generator.xml文件中引用  -->
		<classPathEntry.location>${basedir}/WebRoot/WEB-INF/lib/mysql-connector-java-5.1.18.jar</classPathEntry.location>
		<jdbc.driverClass>com.mysql.jdbc.Driver</jdbc.driverClass>
		<jdbc.connectionURL>jdbc:mysql://localhost:3306/test?generateSimpleParameterMetadata=true</jdbc.connectionURL>
		<jdbc.userId>root</jdbc.userId>
		<jdbc.password>1120</jdbc.password>
		<model.target.dir>${basedir}/src/java</model.target.dir>
		<mappers.target.dir>${basedir}/src/config</mappers.target.dir>
		<client.target.dir>${basedir}/src/java</client.target.dir>
	</properties>
		<!-- 依赖包  -->
	<dependencies>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>bean-validator</artifactId>
			<version>3.0-JBoss-4.0.2</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.annotation</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.ejb</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.enterprise.deploy</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.jms</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.management.j2ee</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.eclipse.persistence</groupId>
			<artifactId>javax.persistence</artifactId>
			<version>2.0.0</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.resource</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.security.auth.message</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.security.jacc</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.servlet</artifactId>
			<version>3.0.1</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.servlet.jsp</artifactId>
			<version>3.0.1</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.servlet.jsp.jstl</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.transaction</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>javax.xml.bind</groupId>
			<artifactId>jaxb-api-osgi</artifactId>
			<version>2.2.1</version>
		</dependency>
		<dependency>
			<groupId>javax.ws.rs</groupId>
			<artifactId>jsr311-api</artifactId>
			<version>1.1.1</version>
		</dependency>
		<dependency>
			<groupId>javax.mail</groupId>
			<artifactId>mail</artifactId>
			<version>1.4.3</version>
		</dependency>
		<dependency>
			<groupId>javax.xml</groupId>
			<artifactId>webservices-api-osgi</artifactId>
			<version>2.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.jboss.weld</groupId>
			<artifactId>weld-osgi-bundle</artifactId>
			<version>1.0.1-SP3</version>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.15</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.18</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.0.6</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.0.2</version>
		</dependency>
		<dependency>
			<groupId>xerces</groupId>
			<artifactId>xmlParserAPIs</artifactId>
			<version>2.6.2</version>
		</dependency>
		<dependency>
			<groupId>dom4j</groupId>
			<artifactId>dom4j</artifactId>
			<version>1.6.1</version>
		</dependency>
		<dependency>
			<groupId>com.sun.mail</groupId>
			<artifactId>pop3</artifactId>
			<version>1.4.4</version>
		</dependency>
		<dependency>
			<groupId>com.sun.mail</groupId>
			<artifactId>smtp</artifactId>
			<version>1.4.4</version>
		</dependency>
		<dependency>
			<groupId>cglib</groupId>
			<artifactId>cglib</artifactId>
			<version>2.2.2</version>
			<type>jar</type>
		</dependency>
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-core</artifactId>
			<version>2.2.3.1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-json-plugin</artifactId>
			<version>2.2.3.1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-config-browser-plugin</artifactId>
			<version>2.2.3.1</version>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.1</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-spring-plugin</artifactId>
			<version>2.2.3.1</version>
		</dependency>
		<dependency>
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
			<version>1.1.1</version>
		</dependency>
		<dependency>
			<groupId>commons-dbcp</groupId>
			<artifactId>commons-dbcp</artifactId>
			<version>1.4</version>
		</dependency>
		<dependency>
			<groupId>c3p0</groupId>
			<artifactId>c3p0</artifactId>
			<version>0.9.1.2</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>3.0.6.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>3.0.6.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>3.0.6.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>3.0.6.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>3.0.6.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>3.0.6.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-asm</artifactId>
			<version>3.0.6.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>3.0.6.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-expression</artifactId>
			<version>3.0.6.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>commons-pool</groupId>
			<artifactId>commons-pool</artifactId>
			<version>1.5.6</version>
		</dependency>
	</dependencies>
	<build>
		<!-- 源文件夹位置定义 -->
		<sourceDirectory>${basedir}/src/java,${basedir}/src/config</sourceDirectory>
		<!-- 输出文件夹位置定义 -->
		<outputDirectory>${basedir}/WebRoot/WEB-INF/classes</outputDirectory>
		<!-- 资源文件位置定义 -->
		<resources>
			<resource>
				<targetPath>${project.build.outputDirectory}</targetPath>
				<directory>${project.build.sourceDirectory}</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
			<resource>
				<directory>${project.build.sourceDirectory}</directory>
				<includes>
					<include>**/*.xml,**/*.properties</include>
				</includes>
			</resource>
		</resources>
		<!-- war包的最终名字格式定义 -->
		<finalName>${project.artifactId}-${project.version}</finalName>
		<!-- 插件定义 -->
		<plugins>
			<!-- 打包插件 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.1.1</version>
				<configuration>
					<webappDirectory>${basedir}/WebRoot</webappDirectory>
					<warSourceDirectory>${basedir}/WebRoot</warSourceDirectory>
					<outputDirectory>${basedir}/target/output</outputDirectory>
				</configuration>
			</plugin>
			<!-- 编译插件 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.3.2</version>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
				</configuration>
			</plugin>
			<!-- mybatis的代码生成插件 -->
			<plugin>
				<groupId>org.mybatis.generator</groupId>
				<artifactId>mybatis-generator-maven-plugin</artifactId>
				<version>1.3.1</version>
				<configuration>
					<configurationFile>${basedir}/src/config/mybatis-generator.xml</configurationFile>
					<verbose>true</verbose>
					<overwrite>true</overwrite>
				</configuration>
				<executions>
					<execution>
						<id>Generate MyBatis Artifacts</id>
						<goals>
							<goal>generate</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>

 

 

3、编辑web.xml:

 

 

 

Xml代码 复制代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <web-appversion="3.0"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  7. <display-name>MybatisSpringStrut2</display-name>
  8. <!-- struts2过滤器配置 -->
  9. <filter>
  10. <filter-name>struts2</filter-name>
  11. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  12. </filter>
  13. <filter-mapping>
  14. <filter-name>struts2</filter-name>
  15. <url-pattern>/*</url-pattern>
  16. </filter-mapping>
  17. <!-- 集成spring -->
  18. <listener>
  19. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  20. </listener>
  21. <!-- spring的配置文件位置 -->
  22. <context-param>
  23. <param-name>contextConfigLocation</param-name>
  24. <param-value>classpath*:spring/applicationContext*.xml</param-value>
  25. </context-param>
  26. <!-- 欢迎页面配置 -->
  27. <welcome-file-list>
  28. <welcome-file>site/index.jsp</welcome-file>
  29. </welcome-file-list>
  30. </web-app>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name>MybatisSpringStrut2</display-name>	
  <!-- struts2过滤器配置 -->
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!-- 集成spring -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
	<!-- spring的配置文件位置 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath*:spring/applicationContext*.xml</param-value>
	</context-param>
	
	<!-- 欢迎页面配置 -->
	<welcome-file-list>
		<welcome-file>site/index.jsp</welcome-file>
	</welcome-file-list>

</web-app>

 

4、struts2的配置文件:

 

strutsxml:

 

 

Xml代码 复制代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <web-appversion="3.0"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  7. <display-name>MybatisSpringStrut2</display-name>
  8. <!-- struts2过滤器配置 -->
  9. <filter>
  10. <filter-name>struts2</filter-name>
  11. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  12. </filter>
  13. <filter-mapping>
  14. <filter-name>struts2</filter-name>
  15. <url-pattern>/*</url-pattern>
  16. </filter-mapping>
  17. <!-- 集成spring -->
  18. <listener>
  19. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  20. </listener>
  21. <!-- spring的配置文件位置 -->
  22. <context-param>
  23. <param-name>contextConfigLocation</param-name>
  24. <param-value>classpath*:spring/applicationContext*.xml</param-value>
  25. </context-param>
  26. <!-- 欢迎页面配置 -->
  27. <welcome-file-list>
  28. <welcome-file>site/index.jsp</welcome-file>
  29. </welcome-file-list>
  30. </web-app>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name>MybatisSpringStrut2</display-name>	
  <!-- struts2过滤器配置 -->
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!-- 集成spring -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
	<!-- spring的配置文件位置 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath*:spring/applicationContext*.xml</param-value>
	</context-param>
	
	<!-- 欢迎页面配置 -->
	<welcome-file-list>
		<welcome-file>site/index.jsp</welcome-file>
	</welcome-file-list>

</web-app>

 

 

struts/struts-admin.xml:

 

 

Xml代码 复制代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  4. "http://struts.apache.org/dtds/struts-2.0.dtd">
  5. <struts>
  6. <!--
  7. result type:
  8. <result-types>
  9. <result-typename="chain"class="com.opensymphony.xwork2.ActionChainResult"/>
  10. <result-typename="dispatcher"class="org.apache.struts2.dispatcher.ServletDispatcherResult"default="true"/>
  11. <result-typename="freemarker"class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
  12. <result-typename="httpheader"class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
  13. <result-typename="redirect"class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
  14. <result-typename="redirectAction"class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
  15. <result-typename="stream"class="org.apache.struts2.dispatcher.StreamResult"/>
  16. <result-typename="velocity"class="org.apache.struts2.dispatcher.VelocityResult"/>
  17. <result-typename="xslt"class="org.apache.struts2.views.xslt.XSLTResult"/>
  18. <result-typename="plainText"class="org.apache.struts2.dispatcher.PlainTextResult"/>
  19. </result-types>
  20. -->
  21. <packagename="admin"namespace="/admin"extends="my-truts2">
  22. <actionname="login">
  23. <result>/admin/login.jsp</result>
  24. </action>
  25. <actionname="main">
  26. <result>/admin/main.jsp</result>
  27. </action>
  28. <!-- 测试拦截器 -->
  29. <actionname="testInterceptor"class="adminAction"method="testInterceptor">
  30. <interceptor-refname="adminLoginInterceptorStack"/>
  31. <result>/admin/main.jsp</result>
  32. </action>
  33. <!-- 测试数据访问功能CRUD -->
  34. <actionname="testCrud"class="adminAction"method="testCrud">
  35. <result>/admin/main.jsp</result>
  36. </action>
  37. </package>
  38. </struts>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

	<!-- 
		result type:
		<result-types>
            <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
            <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
            <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
            <result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
            <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
            <result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
            <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
            <result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
            <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
            <result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
        </result-types>
	 -->

	<package name="admin" namespace="/admin" extends="my-truts2">
		
		<action name="login">
			<result>/admin/login.jsp</result>
		</action>

		<action name="main">
			<result>/admin/main.jsp</result>
		</action>
		
		<!-- 测试拦截器 -->
		<action name="testInterceptor" class="adminAction" method="testInterceptor">
			<interceptor-ref name="adminLoginInterceptorStack"/>
			<result>/admin/main.jsp</result>
		</action>
		
		<!-- 测试数据访问功能CRUD -->
		<action name="testCrud" class="adminAction" method="testCrud">
			<result>/admin/main.jsp</result>
		</action>

	</package>
</struts>

 

 

struts/struts-index.xml:

 

 

Xml代码 复制代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  4. "http://struts.apache.org/dtds/struts-2.0.dtd">
  5. <struts>
  6. <!--
  7. result type:
  8. <result-types>
  9. <result-typename="chain"class="com.opensymphony.xwork2.ActionChainResult"/>
  10. <result-typename="dispatcher"class="org.apache.struts2.dispatcher.ServletDispatcherResult"default="true"/>
  11. <result-typename="freemarker"class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
  12. <result-typename="httpheader"class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
  13. <result-typename="redirect"class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
  14. <result-typename="redirectAction"class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
  15. <result-typename="stream"class="org.apache.struts2.dispatcher.StreamResult"/>
  16. <result-typename="velocity"class="org.apache.struts2.dispatcher.VelocityResult"/>
  17. <result-typename="xslt"class="org.apache.struts2.views.xslt.XSLTResult"/>
  18. <result-typename="plainText"class="org.apache.struts2.dispatcher.PlainTextResult"/>
  19. </result-types>
  20. -->
  21. <packagename="index"namespace="/"extends="my-truts2">
  22. <actionname="index">
  23. <result>/site/index.jsp</result>
  24. </action>
  25. <actionname="language">
  26. <resulttype="redirectAction">index</result>
  27. </action>
  28. </package>
  29. </struts>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

	<!-- 
		result type:
		<result-types>
            <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
            <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
            <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
            <result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
            <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
            <result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
            <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
            <result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
            <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
            <result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
        </result-types>
	 -->

	<package name="index" namespace="/" extends="my-truts2">

		<action name="index">
			<result>/site/index.jsp</result>
		</action>
		
		<action name="language">
			<result type="redirectAction">index</result>
		</action>

	</package>
</struts>

 

 

5、spring的配置文件,位于src/config/spring:

 

applicationContext.xml:

 

 

 

Xml代码 复制代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <beansxmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"
  4. xsi:schemaLocation="
  5. http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  7. http://www.springframework.org/schema/context
  8. http://www.springframework.org/schema/context/spring-context-3.0.xsd">
  9. <!-- 数据源连接信息配置文件 -->
  10. <context:property-placeholderlocation="classpath*:jdbc.properties"/>
  11. <!-- 开发环境数据源 -->
  12. <beanid="dataSource_dev"class="org.apache.commons.dbcp.BasicDataSource"
  13. destroy-method="close">
  14. <propertyname="driverClassName"value="${jdbc.driverClassName.mysql_dev}"/>
  15. <propertyname="url"value="${jdbc.url.mysql_dev}"/>
  16. <propertyname="username"value="${jdbc.username.mysql_dev}"/>
  17. <propertyname="password"value="${jdbc.password.mysql_dev}"/>
  18. </bean>
  19. <!-- 生产环境数据源 -->
  20. <beanid="dataSource_product"class="com.mchange.v2.c3p0.ComboPooledDataSource"
  21. destroy-method="close">
  22. <propertyname="driverClass"value="${jdbc.driverClassName.mysql}"/>
  23. <propertyname="jdbcUrl"value="${jdbc.url.mysql}"/>
  24. <propertyname="user"value="${jdbc.username.mysql}"/>
  25. <propertyname="password"value="${jdbc.password.mysql}"/>
  26. <propertyname="maxPoolSize"value="${c3p0.maxPoolSize}"/>
  27. <propertyname="acquireIncrement"value="${c3p0.acquireIncrement}"/>
  28. <propertyname="minPoolSize"value="${c3p0.minPoolSize}"/>
  29. <propertyname="maxIdleTime"value="${c3p0.maxIdleTime}"/>
  30. </bean>
  31. <!-- 配置sqlSessionFactory -->
  32. <beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">
  33. <propertyname="dataSource"ref="dataSource_dev"/>
  34. <!-- 自动到mappers包下面去搜索mybatis的映射文件 -->
  35. <propertyname="mapperLocations"value="classpath*:mappers/**/*.xml"/>
  36. </bean>
  37. <!-- 使用Spring的事务管理器 -->
  38. <beanid="transactionManager"
  39. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  40. <propertyname="dataSource"ref="dataSource_dev"/>
  41. </bean>
  42. </beans>
<?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"
	xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">

	<!-- 数据源连接信息配置文件 -->
	<context:property-placeholder location="classpath*:jdbc.properties" />
	
	<!-- 开发环境数据源 -->
	<bean id="dataSource_dev" class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName" value="${jdbc.driverClassName.mysql_dev}" />
		<property name="url" value="${jdbc.url.mysql_dev}" />
		<property name="username" value="${jdbc.username.mysql_dev}" />
		<property name="password" value="${jdbc.password.mysql_dev}" />
	</bean>

	<!-- 生产环境数据源 -->
	<bean id="dataSource_product" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">
		<property name="driverClass" value="${jdbc.driverClassName.mysql}" />
		<property name="jdbcUrl" value="${jdbc.url.mysql}" />
		<property name="user" value="${jdbc.username.mysql}" />
		<property name="password" value="${jdbc.password.mysql}" />
		<property name="maxPoolSize" value="${c3p0.maxPoolSize}" />
		<property name="acquireIncrement" value="${c3p0.acquireIncrement}" />
		<property name="minPoolSize" value="${c3p0.minPoolSize}" />
		<property name="maxIdleTime" value="${c3p0.maxIdleTime}" />
	</bean>

	<!-- 配置sqlSessionFactory -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource_dev" />
		<!-- 自动到mappers包下面去搜索mybatis的映射文件 -->
		<property name="mapperLocations" value="classpath*:mappers/**/*.xml" />
	</bean>

	<!-- 使用Spring的事务管理器 -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource_dev" />
	</bean>

</beans>

applicationContextDao.xml:

 

 

Xml代码 复制代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <beansxmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"
  4. xsi:schemaLocation="
  5. http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  7. http://www.springframework.org/schema/context
  8. http://www.springframework.org/schema/context/spring-context-3.0.xsd">
  9. <!-- 单个的注册 MapperFactoryBean -->
  10. <!--
  11. <beanid="managerVOMapper"class="org.mybatis.spring.mapper.MapperFactoryBean">
  12. <propertyname="mapperInterface"value="com.xylcolor.dao.ManagerVOMapper"/>
  13. <propertyname="sqlSessionFactory"ref="sqlSessionFactory"/>
  14. </bean>
  15. -->
  16. <!-- 利用MyBatis-Spring的自动装配机制:
  17. 自动从com.xylcolor.dao包中寻找接口装配成MapperFactoryBean
  18. 有了下面这个配置,那么就不需要像上面那样一个一个的去注册映射器Bean了,大大的减少了工作量
  19. -->
  20. <beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer">
  21. <propertyname="basePackage"value="com.xylcolor.dao"/>
  22. </bean>
  23. </beans>
<?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"
	xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">

	<!-- 单个的注册 MapperFactoryBean -->
	<!-- 
	 <bean id="managerVOMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
		<property name="mapperInterface" value="com.xylcolor.dao.ManagerVOMapper" />
		<property name="sqlSessionFactory" ref="sqlSessionFactory" />
	</bean>
	-->

	<!-- 利用MyBatis-Spring的自动装配机制:
		自动从com.xylcolor.dao包中寻找接口装配成MapperFactoryBean 
		有了下面这个配置,那么就不需要像上面那样一个一个的去注册映射器Bean了,大大的减少了工作量
	-->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.xylcolor.dao" />
	</bean>

</beans>

applicationContextService.xml:

 

 

 

Xml代码 复制代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <beansxmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="
  6. http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context-3.0.xsd">
  10. <beanid="newsService"class="com.xylcolor.service.impl.NewsServiceImpl">
  11. <!--
  12. 这里的ref=newsVOMapper,就是mybatis-spring自动装配的,我们在applicationContextDao.xml
  13. 文件中并没有显示的注册newsVOMapper这个Bean;
  14. 当然这个名字为什么就是newsVOMapper呢,默认的会根据Dao接口名称按照驼峰命名习惯来生成这个名称,
  15. 如果你想拥有自己的名称风格,那么你可以在Dao接口上通过注解@Component或@Named来更改名称,
  16. 例如:
  17. @Component(value="newsVODao")
  18. public interface NewsVOMapper {……}
  19. @Named(value="newsVODao")
  20. public interface NewsVOMapper {……}
  21. 这样以后,这里ref就应该是ref="newsVODao"
  22. -->
  23. <propertyname="newsVOMapper"ref="newsVOMapper"/>
  24. </bean>
  25. </beans>
<?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"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">
        
	<bean id="newsService" class="com.xylcolor.service.impl.NewsServiceImpl">
    	<!-- 
    		这里的ref=newsVOMapper,就是mybatis-spring自动装配的,我们在applicationContextDao.xml
    		文件中并没有显示的注册newsVOMapper这个Bean;
    		当然这个名字为什么就是newsVOMapper呢,默认的会根据Dao接口名称按照驼峰命名习惯来生成这个名称,
    		如果你想拥有自己的名称风格,那么你可以在Dao接口上通过注解@Component或@Named来更改名称,
    		例如:
    		@Component(value="newsVODao")
			public interface NewsVOMapper {……}
			或
			@Named(value="newsVODao")
			public interface NewsVOMapper {……}
			
			这样以后,这里ref就应该是ref="newsVODao" 
    	-->
		<property name="newsVOMapper" ref="newsVOMapper" />
	</bean>

</beans>

 

 

applicationContextActions.xml:

 

 

Xml代码 复制代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <beansxmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="
  6. http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context-3.0.xsd">
  10. <beanid="adminAction"class="com.xylcolor.actions.AdminAction">
  11. <propertyname="newsService"ref="newsService"/>
  12. </bean>
  13. </beans>
<?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"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">

	<bean id="adminAction" class="com.xylcolor.actions.AdminAction">
		<property name="newsService" ref="newsService"/>
	</bean>
</beans>

 

 

6、mybatis的配置文件:mybatis-config.xml,这个文件在我们现在这个环境中其实可以不用,除非你一定要定义一些

typeAliases或者settings;项目中实际要用到的映射文件会由插件生成,由mybatis-spring根据你给的路径自动寻找装配:

 

 

mybatis-config.xml:

 

 

 

Xml代码 复制代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  4. <configuration>
  5. <settings>
  6. <settingname="cacheEnabled"value="true"/>
  7. <settingname="lazyLoadingEnabled"value="true"/>
  8. <settingname="aggressiveLazyLoading"value="true"/>
  9. </settings>
  10. <!-- 别名配置 -->
  11. <typeAliases>
  12. <typeAliasalias="NewsVO"type="com.xylcolor.vo.model.NewsVO"/>
  13. </typeAliases>
  14. </configuration>
<?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="aggressiveLazyLoading" value="true"/>
	</settings>
	
	<!-- 别名配置 -->
	<typeAliases>
		<typeAlias alias="NewsVO" type="com.xylcolor.vo.model.NewsVO"/>
	</typeAliases>
	
</configuration>

 

 

7、代码生成插件的配置文件:mybatis-generator.xml

 

 

Xml代码 复制代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPE generatorConfiguration
  3. PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  4. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
  5. <!-- mybatis-generator插件生成代码的配置文件 -->
  6. <generatorConfiguration>
  7. <classPathEntrylocation="${classPathEntry.location}"/>
  8. <contextid="MySQLTables"targetRuntime="MyBatis3">
  9. <jdbcConnectiondriverClass="${jdbc.driverClass}"
  10. connectionURL="${jdbc.connectionURL}"
  11. userId="${jdbc.userId}"
  12. password="${jdbc.password}">
  13. </jdbcConnection>
  14. <!-- java类型处理器,默认的就这么一个处理器可以用,可以自己写,具体的请参考官方文档http://code.google.com/p/mybatis/wiki/Generator -->
  15. <javaTypeResolver>
  16. <propertyname="forceBigDecimals"value="false"/>
  17. </javaTypeResolver>
  18. <!-- 生成 Model,POJO -->
  19. <javaModelGeneratortargetPackage="com.xylcolor.vo.model"targetProject="${model.target.dir}">
  20. <propertyname="enableSubPackages"value="true"/>
  21. <propertyname="trimStrings"value="true"/>
  22. </javaModelGenerator>
  23. <!-- 生成映射文件*.xml -->
  24. <sqlMapGeneratortargetPackage="mappers"targetProject="${mappers.target.dir}">
  25. <propertyname="enableSubPackages"value="true"/>
  26. </sqlMapGenerator>
  27. <!-- 生成映射器类 -->
  28. <javaClientGeneratortype="XMLMAPPER"targetPackage="com.xylcolor.dao"targetProject="${client.target.dir}">
  29. <propertyname="enableSubPackages"value="true"/>
  30. </javaClientGenerator>
  31. <!-- 指定要生成的表名和对应形成的POJO类名 -->
  32. <tableschema=""
  33. tableName="tb_news"
  34. domainObjectName="NewsVO"/>
  35. </context>
  36. </generatorConfiguration>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
	  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
	  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<!-- mybatis-generator插件生成代码的配置文件 -->
<generatorConfiguration>
	<classPathEntry location="${classPathEntry.location}" />
	
	<context id="MySQLTables" targetRuntime="MyBatis3">
	
		<jdbcConnection driverClass="${jdbc.driverClass}"
			connectionURL="${jdbc.connectionURL}"
			userId="${jdbc.userId}"
			password="${jdbc.password}">
		</jdbcConnection>

		<!-- java类型处理器,默认的就这么一个处理器可以用,可以自己写,具体的请参考官方文档http://code.google.com/p/mybatis/wiki/Generator -->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>

		<!-- 生成 Model,POJO -->
		<javaModelGenerator targetPackage="com.xylcolor.vo.model" targetProject="${model.target.dir}">
			<property name="enableSubPackages" value="true" />
			<property name="trimStrings" value="true" />
		</javaModelGenerator>

		<!-- 生成映射文件*.xml -->
		<sqlMapGenerator targetPackage="mappers" targetProject="${mappers.target.dir}">
			<property name="enableSubPackages" value="true" />
		</sqlMapGenerator>
		
		<!-- 生成映射器类 -->
		<javaClientGenerator type="XMLMAPPER" targetPackage="com.xylcolor.dao" targetProject="${client.target.dir}">
			<property name="enableSubPackages" value="true" />
		</javaClientGenerator>

		<!-- 指定要生成的表名和对应形成的POJO类名  -->
		<table schema="" 
			tableName="tb_news" 
			domainObjectName="NewsVO"/>
			
	</context>
</generatorConfiguration>

 

完成上面那些配置文件以后,基本上配置上就完成了,下面的工作就是java代码的完成了,具体的示例代码见附件,必要的地方我都做了注释。

 

看看实际运行情况:

1.国际化:



 

2:利用插件生成的代码,完成数据的增删改查:

 

 

Java代码 复制代码 收藏代码
  1. /**
  2. * 测试数据的增删改查
  3. * @return
  4. * @throws JSONException
  5. */
  6. public String testCrud() throws JSONException{
  7. String b = "<br />";
  8. String response = "测试数据的增删改查:<br />";
  9. //查
  10. NewsVOExample example = new NewsVOExample();
  11. example.or().andIdIsNotNull();
  12. List<NewsVO> list = newsService.selectByExample(example);
  13. response += "原始数据:<br />";
  14. for (NewsVO newsVO : list) {
  15. response += JSONUtil.serialize(newsVO)+b;
  16. }
  17. //增
  18. NewsVO record = new NewsVO();
  19. record.setTitle("这是我新增的一个新闻");
  20. record.setContent("2012其实真的快到了");
  21. record.setSource("火星资讯");
  22. record.setDate(new Date());
  23. int result = newsService.insert(record);
  24. response += result==1?"插入新数据成功":"插入数据失败"+b;
  25. list = newsService.selectByExample(example);
  26. response += "插入数据后:"+b;
  27. for (NewsVO newsVO : list) {
  28. response += JSONUtil.serialize(newsVO)+b;
  29. }
  30. //改
  31. record = newsService.selectByExample(example).get(0);
  32. response += "修改前的数据:"+b+JSONUtil.serialize(record);
  33. example = new NewsVOExample();
  34. example.or().andTitleEqualTo(record.getTitle());
  35. int originId = record.getId();
  36. record.setTitle("这是我修改后的标题");
  37. result = newsService.updateByExample(record, example);
  38. response += result==1?"修改成功":"修改失败"+b;
  39. example.or().andTitleEqualTo(record.getTitle());
  40. record = newsService.selectByPrimaryKey(originId);
  41. response +="修改后的数据:"+b+JSONUtil.serialize(record)+b;
  42. //删
  43. example.or().andTitleEqualTo("这是我新增的一个新闻");
  44. newsService.deleteByExample(example);
  45. example.or().andIdIsNotNull();
  46. list = newsService.selectByExample(example);
  47. response += "删除数据后:"+b;
  48. for (NewsVO newsVO : list) {
  49. response += JSONUtil.serialize(newsVO)+b;
  50. }
  51. write(response);
  52. return SUCCESS;
  53. }
/**
	 * 测试数据的增删改查
	 * @return
	 * @throws JSONException
	 */
	public String testCrud() throws JSONException{
		String b = "<br />";
		String response = "测试数据的增删改查:<br />";
		
		//查
		NewsVOExample example = new NewsVOExample();
		example.or().andIdIsNotNull();
		List<NewsVO> list = newsService.selectByExample(example);
		response += "原始数据:<br />";
		for (NewsVO newsVO : list) {
			response += JSONUtil.serialize(newsVO)+b;
		}
		//增
		NewsVO record = new NewsVO();
		record.setTitle("这是我新增的一个新闻");
		record.setContent("2012其实真的快到了");
		record.setSource("火星资讯");
		record.setDate(new Date());
		int result = newsService.insert(record);
		response += result==1?"插入新数据成功":"插入数据失败"+b;
		list = newsService.selectByExample(example);
		response += "插入数据后:"+b;
		for (NewsVO newsVO : list) {
			response += JSONUtil.serialize(newsVO)+b;
		}
		//改
		record = newsService.selectByExample(example).get(0);
		response += "修改前的数据:"+b+JSONUtil.serialize(record);
		example = new NewsVOExample();
		example.or().andTitleEqualTo(record.getTitle());
		int originId = record.getId();
		record.setTitle("这是我修改后的标题");
		result = newsService.updateByExample(record, example);
		response += result==1?"修改成功":"修改失败"+b;
		example.or().andTitleEqualTo(record.getTitle());
		record = newsService.selectByPrimaryKey(originId);
		response +="修改后的数据:"+b+JSONUtil.serialize(record)+b;
		
		//删
		example.or().andTitleEqualTo("这是我新增的一个新闻");
		newsService.deleteByExample(example);
		example.or().andIdIsNotNull();
		list = newsService.selectByExample(example);
		response += "删除数据后:"+b;
		for (NewsVO newsVO : list) {
			response += JSONUtil.serialize(newsVO)+b;
		}
		write(response);
		return SUCCESS;
	}


  • 大小: 22.2 KB
  • 大小: 21.6 KB
  • 大小: 47.4 KB
  • 大小: 44.8 KB
  • 大小: 62.8 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics