Maven + SpringMVC + Mybatis【绝非原创,单纯整理】【四】

对于我这样的菜鸟来说,这一部分是我最痛苦的部分了,各种错误啊。而且这里涉及具体的配置,网上牛人各种方式都有,我也在配置的过程中去翻翻mybatis的源代码,尽管没看懂,但是还是比较装2的跟人家炫耀:俺也看过框架源代码,就是没看懂(当然,后面这句没说出口,他们替我说了)。 
第四篇:web.xml,ApplicationContext.xml,xxx-servlet.xml(spring mvc的配置文件),mybatis-config.xml以及sql映射语句xxxxMapper.xml的配置。================================================================= 
呼,好长的题目,差点一口气没上来,憋死。 
先给看一下目录结构: 
[img] 
http://dl.iteye.com/upload/attachment/453071/2ed93902-e777-309e-bbe5-58225bcac04b.png 
[/img] 
同事帮着分的,个人感觉还不错,不一定科学,全凭个人喜好。 
一web.xml

Xml代码  

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
  5. http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  6. <display-name>qdcl-mart</display-name>
  7. <!-- 载入spring上下文  -->
  8. <context-param>
  9. <param-name>contextConfigLocation</param-name>
  10. <param-value>classpath*:/spring/applicationContext.xml</param-value>
  11. </context-param>
  12. <listener>
  13. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  14. </listener>
  15. <!-- Spring 刷新Introspector防止内存泄露 -->
  16. <listener>
  17. <listener-class>
  18. org.springframework.web.util.IntrospectorCleanupListener
  19. </listener-class>
  20. </listener>
  21. <!-- 字符编码过滤器 -->
  22. <filter>
  23. <filter-name>encodingFilter</filter-name>
  24. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  25. <init-param>
  26. <param-name>encoding</param-name>
  27. <param-value>UTF-8</param-value>
  28. </init-param>
  29. </filter>
  30. <filter-mapping>
  31. <filter-name>encodingFilter</filter-name>
  32. <url-pattern>/</url-pattern>
  33. </filter-mapping>
  34. <!-- 载入spring上下文  -->
  35. <servlet>
  36. <servlet-name>mart</servlet-name>
  37. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  38. <init-param>
  39. <param-name>contextConfigLocation</param-name>
  40. <param-value>classpath*:/spring-mvc/mart-servlet.xml</param-value>
  41. </init-param>
  42. <load-on-startup>1</load-on-startup>
  43. </servlet>
  44. <servlet-mapping>
  45. <servlet-name>mart</servlet-name>
  46. <url-pattern>/</url-pattern>
  47. </servlet-mapping>
  48. <!-- 欢迎页面 -->
  49. <welcome-file-list>
  50. <welcome-file>index.jsp</welcome-file>
  51. </welcome-file-list>
  52. </web-app>

关于classpath*:/其实无所谓,至少在我的目录结构里无所谓,用classpath:/或者不写都可以找到的。既然我用这个跑起来了,其他的我就不写了。 
2:applicationContext.xml

Xml代码  

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:aop="http://www.springframework.org/schema/aop"
  5. xmlns:tx="http://www.springframework.org/schema/tx"
  6. xmlns:jdbc="http://www.springframework.org/schema/jdbc"
  7. xmlns:context="http://www.springframework.org/schema/context"
  8. xsi:schemaLocation="
  9. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
  10. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  11. http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
  12. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
  13. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"
  14. >
  15. <!-- 属性文件读入 -->
  16. <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  17. <property name="locations">
  18. <list>
  19. <value>classpath:spring/jdbc.properties</value>
  20. </list>
  21. </property>
  22. </bean>
  23. <!-- 数据库连接池 -->
  24. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  25. <property name="driverClassName" value="${jdbc.driver}" />
  26. <property name="url" value="${jdbc.url}" />
  27. <property name="username" value="${jdbc.username}" />
  28. <property name="password" value="${jdbc.password}" />
  29. </bean>
  30. <!-- Mybatis‘s sqlSessionFactory config -->
  31. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  32. <property name="dataSource" ref="dataSource"></property>
  33. <property name="configLocation" value="classpath:mybatis-config.xml"/>
  34. </bean>
  35. <bean name="transactionManager"
  36. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  37. <property name="dataSource" ref="dataSource"></property>
  38. </bean>
  39. <!-- 启用事务 -->
  40. <tx:advice id="txAdvice" transaction-manager="transactionManager">
  41. <tx:attributes>
  42. <tx:method name="save*" propagation="REQUIRED" />
  43. <tx:method name="delete*" propagation="REQUIRED" />
  44. <tx:method name="update*" propagation="REQUIRED" />
  45. </tx:attributes>
  46. </tx:advice>
  47. <aop:config>
  48. <aop:pointcut id="serviceOperation"  expression="execution(* com.qdcl.mart.business.service.*.*(..))" />
  49. <aop:advisor advice-ref="txAdvice"   pointcut-ref="serviceOperation" />
  50. </aop:config>
  51. <!-- scan  mappers and let them be autowired -->
  52. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  53. <property name="basePackage" value="com.qdcl.mart.business.persistence" />
  54. </bean>
  55. <!-- 激活annotation功能 -->
  56. <context:annotation-config />
  57. <!-- 激活annotation功能 -->
  58. <context:spring-configured/>
  59. <!-- 扫描指定package下所有带有如@controller,@services,@resource,并把所注释的注册为Spring Beans -->
  60. <context:component-scan base-package="com.qdcl.mart.business.service" />
  61. </beans>

jdbc.properties

Properties代码  

  1. jdbc.url=jdbc:mysql://localhost:3306/qdclmart?useUnicode=true&amp;characterEncoding=UTF-8
  2. jdbc.driver=com.mysql.jdbc.Driver
  3. jdbc.username=root
  4. jdbc.password=root

里面的dataSource就不说了,简单说一下 
①、sqlSessionFactory:用来进行数据库操作的类,而且好玩的是虽然你配了org.mybatis.spring.SqlSessionFactoryBean,但是测试的时候你用getBean("sqlSessionFactory")得到的确是mybatis的这个类: org.apache.ibatis.session.SqlSessionFactory,原因是org.mybatis.spring.SqlSessionFactoryBean.getObject返回的类型给改变了。具体为何我也不知道。大家可以测试一下,强转就抛错误了。 
②、

Java代码  

  1. <!-- scan  mappers and let them be autowired -->
  2. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  3. <property name="basePackage" value="com.qdcl.mart.business.persistence" />
  4. </bean>

这段配置是我比较喜欢滴,因为他自动扫描了所有的XxxxMapper.java,这样就不用一个一个手动配置Mpper的映射了,只要Mapper接口类和Mapper映射文件对应起来就可以了。详细的大家可以到google mybatis项目网址看一下那个文档,中文滴。 
③、

Java代码  

  1. <!-- 激活annotation功能 -->
  2. <context:annotation-config />
  3. <!-- 激活annotation功能 -->
  4. <context:spring-configured/>
  5. <!-- 扫描指定package下所有带有如@controller,@services,@resource,并把所注释的注册为Spring Beans -->
  6. <context:component-scan base-package="com.qdcl.mart.business.service" />

以上3句不解释了啊,就是注解式管理bean,有的大神不推荐,我个人还是喜欢,因为对大量的配置文件有些抵触,错了找起来比较麻烦。懒嘛。 context:component-scan尽管他是递归方式扫描,我还是建议大家base-package具体一些,你懂得。 
3:mart-servlet.xml

Xml代码  

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:p="http://www.springframework.org/schema/p"
  5. xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xmlns:context="http://www.springframework.org/schema/context"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  8. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
  9. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"
  10. >
  11. <!-- 只能用于springMVC,用于配置springMVC的注解驱动 -->
  12. <mvc:annotation-driven />
  13. <!-- Spring mvc视图解析器  -->
  14. <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  15. <property name="prefix" value="/WEB-INF/view/" />
  16. <property name="suffix" value=".jsp" />
  17. </bean>
  18. <context:component-scan base-package="com.qdcl.mart.business.web" />
  19. </beans>

只说一句,一开始没加<context:component-scan base-package="com.qdcl.mart.business.web" />这一句,结局就是我在Controller里面写RequestMapping(xxxx)的时候是找不到的,我弄了一上午,并且发誓再找不到原因就跳楼的,还好吃饭前找出原因。要不要么是死人,要么是女人了。呵呵。 
4、mybatis-config.xml

Xml代码  

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
  3. <configuration>
  4. <!-- 基础设置 -->
  5. <settings>
  6. <!-- changes from the defaults -->
  7. <setting name="lazyLoadingEnabled" value="false" />
  8. </settings>
  9. <!-- 别名定义 -->
  10. <typeAliases>
  11. <typeAlias alias="production" type="com.qdcl.mart.business.domain.Production" />
  12. </typeAliases>
  13. <!-- SQL映射文件 -->
  14. <mappers>
  15. <mapper resource="mapper/ProductionMapper.xml" />
  16. </mappers>
  17. </configuration>

也是一句,就是最后这个mappers的resource配置,当时手贱,写成/mapper/ProductionMapper.xml,那叫一个悲剧,一直没找到,这就是不仔细看文档的下场。 
5、XxxMapper.xml(ProductionMapper.xml)

Xml代码  

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.qdcl.mart.business.persistence.ProductionMapper">
  5. <!-- 检索 -->
  6. <select id="selectProductionByName" parameterType="java.lang.String" resultType="production">
  7. <!-- 检索sql文 -->
  8. SELECT productionid,productionname,price,detail FROM production
  9. where productionname = #{productionname}
  10. </select>
  11. <!-- 插入 -->
  12. <insert id="insertProduction" parameterType="production">
  13. insert into production  values (#{productionid},#{productionname},#{price},#{detail});
  14. </insert>
  15. <!-- 更新 -->
  16. <update id="updateProduction" parameterType="production">
  17. update production set productionname = #{productionname},
  18. price = #{price},
  19. detail = #{detail}
  20. </update>
  21. <!-- 删除 -->
  22. <delete id="deleteProduction" parameterType="java.lang.String">
  23. delete from production where productionid = #{value}
  24. </delete>
  25. </mapper>

还是一句,这里的sql id一定要和XxxMapper.xml里面的一致起来,废话。

 整理的比较粗略,将代码分享给大家,【源码地址获取

时间: 2024-10-11 15:19:18

Maven + SpringMVC + Mybatis【绝非原创,单纯整理】【四】的相关文章

maven+springMVC+mybatis+junit详细搭建过程 【转】

springMVC+mybatis框架搭建 首先我们先要弄清搭建项目的一般流程,需要注意哪些方面,想要什么样的效果,自己的功能有哪些? (假设效果:项目目录结构清晰,能够查询到本地数据库中的内容..) 1.  工程目录结构整理清楚 在src/main/java文件夹中,新建包cn.springmvc.model(存放javabean), cn.springmvc.dao(存放spring与mybatis连接接口), cn.springmvc.service(service接口), cn.spri

maven+springMVC+mybatis+junit详细搭建过程

springMVC+mybatis框架搭建 首先我们先要弄清搭建项目的一般流程,需要注意哪些方面,想要什么样的效果,自己的功能有哪些? (假设效果:项目目录结构清晰,能够查询到本地数据库中的内容..) 1.  工程目录结构整理清楚 在src/main/java文件夹中,新建包cn.springmvc.model(存放javabean), cn.springmvc.dao(存放spring与mybatis连接接口), cn.springmvc.service(service接口), cn.spri

Spring MVC 环境搭建(maven+SpringMVC+mybatis+Freemarker) ----DawnHeaven

Spring MVC 环境搭建(maven+SpringMVC+mybatis+Freemarker)       ------DawnHeaven 一.准备工作 1.Eclipse Java EE IDE(4.4.1) 2.JDK 3.Tomcat 4.Maven  maven安装指南 二.构建工程 1.file->new->Project 2.next 3. next 4.next 5.finish 工程目录如下 三.完善项目 首先,完善目录,增加重要的source Folder,这个不是

原:maven+springMVC+mybatis+junit详细搭建过程

阅读目录 1.  工程目录结构整理清楚 2.  引入依赖包 3. 配置数据库连接属性 4.  配置spring配置文件 5.  java代码编写(model,dao,service层代码) 6.  mybatis配置 7.  junit测试插入功能 8.  springMVC模块搭建 9.  log4j日志记录搭建 10.  测试运行 整体包下载地址: springMVC+mybatis框架搭建 首先我们先要弄清搭建项目的一般流程,需要注意哪些方面,想要什么样的效果,自己的功能有哪些? (假设效

服务化、原子化maven,springmvc,mybatis,shiro,bootstrap框架整合

下载源码猛搓这里 maven构建springmvc+mybatis+rest+bootstrap(cms开源)SpringMVC + Mybatis + SpringSecurity(权限控制到方法按钮) + Rest(服务) + Webservice(服务) + Quartz(定时调度)+ Lucene(搜索引擎) + HTML5 bootstrap + Maven项目构建绝对开源平台项目Mave构建,模拟大型互联网架构,做到高并发,大数据处理,整个项目使用定制化服务思想,提供原子化.模块化的

maven,springmvc,mybatis,bootstrap,restful 框架整合

下载源码猛搓这里 maven构建springmvc+mybatis+rest+bootstrap(cms开源)SpringMVC + Mybatis + SpringSecurity(权限控制到方法按钮) + Rest(服务) + Webservice(服务) + Quartz(定时调度)+ Lucene(搜索引擎) + HTML5 bootstrap + Maven项目构建绝对开源平台项目Mave构建,模拟大型互联网架构,做到高并发,大数据处理,整个项目使用定制化服务思想,提供原子化.模块化的

大型互联网企业框架整合maven,springmvc,mybatis,shiro,bootstrap

下载源码猛搓这里 maven构建springmvc+mybatis+rest+bootstrap(cms开源)SpringMVC + Mybatis + SpringSecurity(权限控制到方法按钮) + Rest(服务) + Webservice(服务) + Quartz(定时调度)+ Lucene(搜索引擎) + HTML5 bootstrap + Maven项目构建绝对开源平台项目Mave构建,模拟大型互联网架构,做到高并发,大数据处理,整个项目使用定制化服务思想,提供原子化.模块化的

【maven构建高并发、大数据、服务化框架搭建】maven+Springmvc+Mybatis+Shiro+REST+WebService+JMS+Lucene+Bootstrap html5

1. 使用阿里巴巴Druid连接池(高效.功能强大.可扩展性好的数据库连接池.监控数据库访问性能.支持Common-Logging.Log4j和JdkLog,监控数据库访问) 2. 提供高并发JMS消息处理机制 3. 所有功能模块化.所有模块服务化.所有服务原子化的方式,提供可拓展的服务模型,使程序稳定运行,永不宕机 4. 提供Wink Rest.Webservice服务,故可作为独立服务平台部署 框架整合: Springmvc + Mybatis + Shiro(权限) + REST(服务)

【企业级框架整合源码】maven+Springmvc+Mybatis+Shiro+REST+WebService+JMS+Lucene+Bootstrap

开发报捷:增加Lucene搜索引擎功能 1. 创建.初始化索引.统一搜索入口.搜索结果展现--内容.标题高亮.关键词搜索 2. 高级搜索:高级搜索增加多入口查询(精确查询.模糊查询.前缀查询等),每页显示条数自定义.索引结果数据设置.选择索引文档类型等) 集成lucene搜索引擎: 1. 使用阿里巴巴Druid连接池(高效.功能强大.可扩展性好的数据库连接池.监控数据库访问性能.支持Common-Logging.Log4j和JdkLog,监控数据库访问) 2. 提供高并发JMS消息处理机制 3.

【SSM框架整合】maven+Springmvc+Mybatis+Shiro+REST+WebService+JMS+Lucene+Bootstrap

开发报捷:增加Lucene搜索引擎功能 1. 创建.初始化索引.统一搜索入口.搜索结果展现--内容.标题高亮.关键词搜索 2. 高级搜索:高级搜索增加多入口查询(精确查询.模糊查询.前缀查询等),每页显示条数自定义.索引结果数据设置.选择索引文档类型等) 集成lucene搜索引擎: 1. 使用阿里巴巴Druid连接池(高效.功能强大.可扩展性好的数据库连接池.监控数据库访问性能.支持Common-Logging.Log4j和JdkLog,监控数据库访问) 2. 提供高并发JMS消息处理机制 3.