Spring+SpringMVC+Mybatis整合
来源:互联网 发布:mac如何删除软件 编辑:程序博客网 时间:2024/05/18 11:30
1.框架
随便互联网的发展,各种各样的需求,所以我们选择了这个灵活多变的持久层框架Mybatis。Spring大家应该是用的比较多,IOC容器,事务控制,切面编程AOP,MVC设计模式等等都是很不错。
spring在整个框架中都是贯穿始终。
2.框架环境
a) 数据库环境:mysql-5.1.7
详情:连接池的配置(使用阿里的druid)、SqlSessionFactoryBean配置、采用扫描方式配置mapper、spring的事务配置、配置切面AOP...
b) Jdk :jdk 1.7.0_80
c) Eclipse :4.5.2
d) Spring :spring-3.2.0
e) Mybatis :mybatis-3.2.7
3.框架结构展示
我这里面还整合了quartz定时器以及radis缓存可以忽略不计。
4.核心文件的配置
1、spring-serlvet.xml
springMVC的工作流程:
这里面一共包含6种组件:
前端控制器DispatcherServlet(spring提供)
处理器映射器HandlerMapping(配置)
处理器适配器HandlerAdapter(配置)
处理器Handler(即controller自己编写)
视图解析器View resolver(配置)
视图View(自己编写jsp页面)
本次主要采用的注解的方式配置,简单方便。<!-- 是对包进行扫描,实现注释驱动--> <context:annotation-config /> <!-- 设置使用注解的类所在的controller包 --> <context:component-scan base-package="com.xinxun.strategy"></context:component-scan><!-- http://www.cnblogs.com/benwu/articles/5162614.html注解处理器映射器DefaultAnnotationHandlerMapping、注解处理器适配器 AnnotationMethodHandlerAdapterjackson:在方法名前面增加@ResponseBody注解。如果Spring发现项目lib库中含有Jackson包Spring启用了 mvc:annotation-driven MVC注解配置返回的方法使用了@ResponseBody注解Spring 会自动进行JSON的转换。。用注释驱动代替--><mvc:annotation-driven><mvc:message-converters> <!-- @ResponseBody返回的字符串带有中文时 防止中文乱码 --> <bean class="org.springframework.http.converter.StringHttpMessageConverter" > <property name = "supportedMediaTypes"> <list> <value>text/plain;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven><!-- 配置视图解析器 解析jsp解析,默认使用jstl标签,classpath下的得有jstl的包--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 转向路径解析前缀 --><property name="prefix" value="/WEB-INF/jsp/"></property><!-- 转向路径解析后缀 --><property name="suffix" value=".jsp"/></bean>
2、spring-config.xml
主要配置spring和mybatis的整合以及spring的事务控制
由上图可以看出mybatis的执行流程核心文件SqlMapConfig.xml,由该文件创建SqlSessionFactoryBuilder,再由SqlSessionFactoryBuilder创建SqlSessionFactory(单例的),
再生产SqlSession,有了sqlSession就可以mapper里面方法,操作数据库。
<!-- 加载db.properties文件中的内容,db.properties文件中key命名要有一定的特殊规则 --><context:property-placeholder location="classpath:db.properties" /> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 基本属性 url、user、password --> <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="1" /> <property name="minIdle" value="1" /> <property name="maxActive" value="20" /> <!-- 配置获取连接等待超时的时间 --> <property name="maxWait" value="60000" /> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="60000" /> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="300000" /> <property name="validationQuery" value="SELECT 'x'" /> <property name="testWhileIdle" value="true" /> <property name="testOnBorrow" value="false" /> <property name="testOnReturn" value="false" /> <!-- 打开PSCache,并且指定每个连接上PSCache的大小 --> <property name="poolPreparedStatements" value="false" /> <property name="maxPoolPreparedStatementPerConnectionSize" value="20" /> <!-- 配置监控统计拦截的filters --> <property name="filters" value="stat" /> </bean><!--2. mybatis的SqlSession的工厂: SqlSessionFactoryBean dataSource:引用数据源MyBatis定义数据源,同意加载配置--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"></property><property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml" /> </bean><!--3. mybatis自动扫描加载Sql映射文件/接口 : MapperScannerConfigurer sqlSessionFactorybasePackage:指定sql映射文件/接口所在的包(自动扫描)--><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.xinxun.strategy.mapper"/><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /></bean><!--4. 事务管理 : DataSourceTransactionManager dataSource:引用上面定义的数据源--><bean id="txManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean><!-- 5. 使用声明式事务 transaction-manager:引用上面定义的事务管理器--><tx:annotation-driven transaction-manager="txManager" /><!-- 6. 通知 --><tx:advice id="txAdvice" transaction-manager="txManager"> <tx:attributes> <tx:method name="execute*" propagation="REQUIRED" /> <tx:method name="save*" propagation="REQUIRED" /> <tx:method name="add*" propagation="REQUIRED" /> <tx:method name="create*" propagation="REQUIRED" /> <tx:method name="insert*" propagation="REQUIRED" /> <tx:method name="update*" propagation="REQUIRED" /> <tx:method name="merge*" propagation="REQUIRED" /> <tx:method name="del*" propagation="REQUIRED" /> <tx:method name="remove*" propagation="REQUIRED" /> <tx:method name="put*" propagation="REQUIRED" /> <tx:method name="use*" propagation="REQUIRED"/> <tx:method name="get*" propagation="REQUIRED" read-only="true" /> <tx:method name="count*" propagation="REQUIRED" read-only="true" /> <tx:method name="find*" propagation="REQUIRED" read-only="true" /> <tx:method name="list*" propagation="REQUIRED" read-only="true" /> <tx:method name="*" read-only="true" /> </tx:attributes> </tx:advice> <!-- 7. aop面向切面 --> <aop:config expose-proxy="true"> <aop:pointcut id="txPointcut" expression="execution(* com.xinxun.strategy.service..*.*(..))" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/> </aop:config>
3、web.xml
每一个web项目都会有这个文件。
主要配置:加载spring容器上下文context、配置dispatcherservlet等等
<!-- 加载spring容器 上下文--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/spring-config.xmlclasspath:quartz/quartz.xmlclasspath:redis/redis.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener> <!-- 配置dispatcherservlet --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 配置springmvc加载的配置文件(配置处理器映射器、适配器、视图解析器等等) --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/spring-servlet.xml</param-value> </init-param> <!-- 当前servlet启动加载优先级 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
4、sqlMapConfig.xml
这个文件暂时没有配置,只有头,mapper已经在spring-config.xml中配置。
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration></configuration>
5、db.properties
数据库连接的配置文件
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/strategyjdbc.username=rootjdbc.password=mysql
6、log4j.properties
log4j.rootLogger=DEBUG, stdout# Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
配置文件了主要就是这些!
5.总结
我没有贴出java类的代码。相信这些大家都在熟悉不过了!Spring为我们做了很多的工作,注解用起来也十分方便!多去看看spring的源码,了解一下原理,很多问题都会迎刃而解!
1 0
- Spring-SpringMVC-Mybatis整合
- springmvc+spring+mybatis整合
- springmvc+spring+mybatis整合
- Spring+SpringMVC+Mybatis整合
- springmvc+mybatis+spring整合
- springmvc+spring+mybatis 整合
- mybatis+springmvc+spring 整合
- SpringMVC+Spring+Mybatis整合
- springmvc+spring+mybatis 整合
- springmvc+spring+mybatis整合
- Spring+Springmvc+MyBatis整合
- Spring+Springmvc+MyBatis整合
- Spring+Springmvc+MyBatis整合
- springmvc+mybatis+spring 整合
- springmvc+mybatis+spring 整合
- spring+springMVC+Mybatis整合
- spring springmvc mybatis 整合
- springmvc+mybatis+spring整合
- maven的安装、路径配置、修改库文件路径和eclipse中的配置、创建maven工程。
- iOS10 UI教程禁用视图与用户的交互
- XML的三种解析方式
- 如何让js弹出新窗口不被拦截
- 第1章 BashShell命令------------(tail、head)
- Spring+SpringMVC+Mybatis整合
- libsvm svm-train的各个参数及其公式
- java8 新时间API用法实例(LocalDate、LocalTime、LocalDateTime)
- 散列表的基本原理与实现
- IE“浏览器模式”和“文档模式”的渲染测试
- log4j 2.x读取配置文件以及使用
- 解决:plsql连接远程oracle和like无法查询中文问题
- [Unity]一些总结
- 光的颜色