乐趣区

关于chrome:Spring-MVC-整合Mybatis开发

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 {

@Resource
private FormTemplateMapper formTemplateMapper;

@Override
public 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 {

@Autowired
private FormRestServices.BASE formBaseService;

/**
 * testMybatis
 *
 * @return
 */
@RequestMapping(value = "/testMybatis", method = RequestMethod.POST)
public RespMapJson testMybatis()  {return formBaseService.selectTest();
}

}

至此,能够开始基于 mybatis 的开发工作了!

退出移动版