Spring MVC 整合Mybatis开发
maven
<!-- mybatis ORM spring集成框架 -->
<dependency>
<groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.0</version>
</dependency>
mybatis配置和数据库配置
sqlMapConfig.xml (含分页插件)
<?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="callSettersOnNulls" value="true"/> <!-- 这个配置使全局的映射器启用或禁用缓存 --> <setting name="cacheEnabled" value="true" /> <!-- 容许 JDBC 反对生成的键。须要适宜的驱动。如果设置为 true 则这个设置强制生成的键被应用,只管一些驱动回绝兼容但依然无效(比方 Derby) --> <setting name="useGeneratedKeys" value="true" /> <!-- 配置默认的执行器。SIMPLE 执行器没有什么特别之处。REUSE 执行器重用预处理语句。BATCH 执行器重用语句和批量更新 --> <setting name="defaultExecutorType" value="REUSE" /> <!-- 全局启用或禁用提早加载。当禁用时,所有关联对象都会即时加载。默认:true --> <!-- <setting name="lazyLoadingEnabled" value="true"/> --> <!-- 当启用时,有提早加载属性的对象在被调用时将会齐全加载任意属性 . 默认:true--> <!-- <setting name="aggressiveLazyLoading" value="true"/> --> <!-- 设置超时工夫,它决定驱动期待一个数据库响应的工夫。 --> <setting name="defaultStatementTimeout" value="25000"/></settings><plugins> <!-- com.github.pagehelper为PageHelper类所在包名 --> <plugin interceptor="com.github.pagehelper.PageHelper"> <property name="dialect" value="mysql"/> <!-- 该参数默认为false --> <!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码应用 --> <!-- 和startPage中的pageNum成果一样--> <property name="offsetAsPageNum" value="true"/> <!-- 该参数默认为false --> <!-- 设置为true时,应用RowBounds分页会进行count查问 --> <property name="rowBoundsWithCount" value="true"/> </plugin></plugins>
spring-dao.xml 游戏数据配置
<?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:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"><description>Spring-Database配置</description><!-- C3P0 数据源配置 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${db.activiti.driver}"/> <property name="jdbcUrl" value="${db.activiti.url}"/> <property name="user" value="${db.activiti.username}"/> <property name="password" value="${db.activiti.password}"/> <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 --> <property name="initialPoolSize" value="${db.activiti.initialSize}"></property> <!--连接池中保留的最大连接数。Default: 15 --> <property name="maxPoolSize" value="${db.activiti.maxActive}"></property> <!--最大闲暇工夫,60秒内未应用则连贯被抛弃。若为0则永不抛弃。Default: 0 --> <property name="maxIdleTime"> <value>60</value> </property> <!--当连接池中的连贯耗尽的时候c3p0一次同时获取的连接数。Default: 3 --> <property name="acquireIncrement"><value>5</value></property> <!--JDBC的规范参数,用以控制数据源内加载的PreparedStatements数量。但因为预缓存的statements 属于单个connection而不是整个连接池。所以设置这个参数须要思考到多方面的因素。 如果maxStatements与maxStatementsPerConnection均为0,则缓存被敞开。Default: 0--> <property name="maxStatements"><value>0</value></property> <!--每60秒查看所有连接池中的闲暇连贯。Default: 0 --> <property name="idleConnectionTestPeriod"><value>60</value></property> <!--定义在从数据库获取新连贯失败后反复尝试的次数。Default: 30 --> <property name="acquireRetryAttempts"><value>30</value></property> <!--获取连贯失败将会引起所有期待连接池来获取连贯的线程抛出异样。然而数据源仍无效 保留,并在下次调用getConnection()的时候持续尝试获取连贯。如果设为true,那么在尝试 获取连贯失败后该数据源将申明已断开并永恒敞开。Default: false--> <property name="breakAfterAcquireFailure"><value>true</value></property> <!--因性能耗费大请只在须要的时候应用它。如果设为true那么在每个connection提交的 时候都将校验其有效性。倡议应用idleConnectionTestPeriod或automaticTestTable 等办法来晋升连贯测试的性能。Default: false --> <property name="testConnectionOnCheckout"><value>false</value></property></bean><!-- MyBatis配置 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:/config/sqlMapConfig.xml" /> <!-- 主动扫描entity目录, 省掉Configuration.xml里的手工配置 --> <!-- <property name="typeAliasesPackage" value="cn.com.showclear.activiti.pojo.activiti" />--> <!-- 显式指定Mapper文件地位 --> <property name="mapperLocations" value="classpath:/config/mappers/activiti/*.xml" /></bean><!-- DAO接口所在包名,Spring会主动查找其下的类 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="cn.com.showclear.activiti.dao" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property></bean><!--事务配置--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/></bean><tx:annotation-driven transaction-manager="transactionManager" mode="proxy" proxy-target-class="true"/><tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="find*" read-only="true" /> <tx:method name="get*" read-only="true" /> <tx:method name="page*" read-only="true" /> <tx:method name="query*" read-only="true" /> <tx:method name="unique*" read-only="true" /> <tx:method name="*" read-only="false" /> <tx:method name="*" rollback-for="Exception" /> </tx:attributes></tx:advice><tx:annotation-driven transaction-manager="transactionManager" />
</beans>
generatorConfig.xml
pojo、mapper.xml、dao 逆向生成游戏插件
<?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">
<generatorConfiguration>
<!--数据库驱动--><classPathEntry location="F:\sync\tools\jar\mysql\mysql-connector-java-5.1.40.jar"/><!-- flat 模式不会产生blobs类--><context id="scooper" defaultModelType="flat" targetRuntime="MyBatis3"> <commentGenerator> <property name="javaFileEncoding" value="UTF-8"/> <property name="suppressDate" value="false"/> <property name="suppressAllComments" value="true"/> </commentGenerator> <!--物资治理--> <!-- 数据库链接地址账号密码--> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1/DB_SC_ACTIVITI?useSSL=true" userId="xxxx" password="xxx"> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!--生成Model类寄存地位--> <javaModelGenerator targetPackage="cn.com.showclear.activiti.pojo.activiti" targetProject="src\main\java"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> <!-- 如果是true则会生成结构器的model和mapper --> <property name="immutable" value="false"/> </javaModelGenerator> <!--生成映射文件寄存地位--> <sqlMapGenerator targetPackage="plan" targetProject="src\main\resources\mappers\activiti"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!--生成Dao类寄存地位--> <javaClientGenerator type="Xwww.cungun.comMLMAPPER" targetPackage="cn.com.showclear.activiti.dao.activiti" targetProject="src\main\java"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <table tableName="T_FORM_TEMPLATE" domainObjectName="FormTemplate" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" ></table></context>
</generatorConfiguration>
maven
<!-- mybatis 逆向工程插件 -->
<plugin>
<groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.5</version> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> </configuration></plugin>
接口定义和实现类(供Controller)
接口定义
/**
- 表单相干
* - @author YF-XIACHAOYANG
- @date 2017/12/21 11:38
*/
public interface FormRestServices {
/** * 表单根底接口 */interface BASE { RespMapJson selectTest();}
}
服务层实现类
/**
- 表单根底服务
- @author YF-XIACHAOYANG
- @date 2018/3/15 16:12
*/
@Service
public class Formwww.cungun.comBaseServiceImpl implements FormRestServices.BASE {
@Resourceprivate FormTemplateMapper formTemplateMapper;@Overridepublic RespMapJson selectTest() { FormTemplate form = formTemplateMapper.selectByPrimaryKey(Long.valueOf(1)); System.out.println(form.getContent()); return new RespMapJson().setData(form);}
}
FormTemplateMapper 为 mydsatis 逆向工程插件生成
Controller调用
/**
- 工作查问控制器
- @author YF-XIACHAOYANG
- @date 2017/12/20 16:51
*/
@Api(value = "form", description = "工作流表单治理")
@RestController
@RequestMapping("/data/form/")
public class FormRestController {
@Autowiredprivate FormRestServices.BASE formBaseService;/** * testMybatis * * @return */@RequestMapping(value = "/testMybatis", method = RequestMethod.POST)public RespMapJson testMybatis() { return formBaseService.selectTest();}
}
至此,能够开始基于mybatis的开发工作了!