梗概
本文在Intellij IDEA
下配置。
本文主要是在已经配置好Maven-SpringMVC
的基础上进行MyBatis
的整合,主要实现的功能包括:
- 采用数据库连接池组件;
- 采用
Mapper
接口开发,减少xml配置文件数量; - 最少配置,可以完成基本的Mysql操作。
配置概述
主要涉及到
1.Maven
引入数据库相关库;
2.SpringMVC配置文件
(通常为servletname-servlet.xml)
2.1配置属性文件所在文件;
2.2 配置MyBatis
相关属性(SqlSessionFactory与扫描Mapper
范围)
2.3 配置数据库连接池;
- 配置数据库连接相关属性
-
MyBatis
各种参数的详细配置文件SqlMapConfig.xml - 编写
Mapper
DAO文件。
配置详解
Maven依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version><!--自行更改为自己使用的版本-->
</dependency>
<!--mysql驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<!-- 数据库连接池之前用的最新版,结果提示maven网站上没有-->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
reimport maven即可。
Spring
配置
在Spring
配置文件中增加如下配置
<!--属性文件位置,下面的datasource需要用到-->
<bean id="propertyConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:/spring/jdbc.properties</value>
</list>
</property>
</bean>
<!--mybais配置:Spring、MyBatis的整合,需要在 Spring 应用上下文中定义至少两样东西:一个SqlSessionFactory,一个Mapper扫描配置,可以是xml,也可以是注解扫描范围-->
<!--里面设置了数据源与mybatis详细参数的配置 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 数据源,下面会有定义,通过属性文件作为变量-->
<property name="dataSource" ref="recvDataSource" />
<!-- mybatis的各种参数详细配置 -->
<property name="configLocation" value="classpath:SqlMapConfig.xml" />
</bean>
<!-- mybatis扫描dao的范围,这样就不需要在xml写大量的Mapper映射-->
<bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.lmj.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
<!-- 数据源,此处用的变量,变量配置在前文声明的属性文件中,ID可以改成项目相关的 -->
<bean id="recvDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driver}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="minPoolSize" value="1" />
<property name="maxPoolSize" value="10"/>
<property name="initialPoolSize" value="1"/>
<property name="maxIdleTime" value="7200"/>
<property name="idleConnectionTestPeriod" value="1800"></property>
</bean>
配置数据库参数,此对应于Spring
配置中的ComboPooledDataSource
类的配置
#jdbc.properties文件,为前文声明的属性文件
jdbc.driver=com.mysql.cj.jdbc.Driver
#最后的时区如果删除,可能出现提示有多个时区的错误
jdbc.url=jdbc\:mysql\://localhost\:3306/db_name?useUnicode\=true&characterEncoding\=UTF-8&autoReconnect\=true&useSSL\=false&serverTimezone\=UTC
#自己更改为自己数据库对应的用户名与密码
jdbc.username=usernam
jdbc.password=password
配置SqlMapConfig.xml
此对应于Spring
配置于里面的SqlSessionFactoryBean
的配置。
<!---SqlMapConfig.xml文件,前文配的路径在classpath下,那么可以放到resources文件夹下面->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.googlecode.com/svn/trunk/src/main/java/org/apache/ibatis/builder/xml/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 这个配置使全局的映射器启用或禁用缓存
<setting name="cacheEnabled" value="true" />
-->
<!-- 允许 JDBC 支持生成的键。需要适合的驱动。如果设置为 true 则这个设置强制生成的键被使用,尽管一些驱动拒绝兼容但仍然有效 -->
<setting name="useGeneratedKeys" value="true" />
<!-- 配置默认的执行器。SIMPLE 执行器没有什么特别之处。REUSE 执行器重用预处理语句。BATCH 执行器重用语句和批量更新 -->
<setting name="defaultExecutorType" value="REUSE" />
<!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 -->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 设置超时时间,它决定驱动等待一个数据库响应的时间。 -->
<setting name="defaultStatementTimeout" value="25000"/>
<!-- 下划线与驼峰式命名规则的映射,配置了此,则数据库字段名会将下划线命名映射为Java里面的驼峰命名,而不用特别转换 -->
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings>
<!-- 别名配置 -->
<typeAliases>
<typeAlias alias="int" type="java.lang.Integer" />
<typeAlias alias="long" type="java.lang.Long" />
<typeAlias alias="string" type="java.lang.String" />
</typeAliases>
</configuration>
编写Mapper
//注意包名,与`Spring`里面配置的MapperScanner一致
package com.lmj.dao;
import com.lmj.pojo.RecvRecord;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
public interface RecvRecordMapper {
@Select("SELECT * FROM recv_record WHERE id = #{id}")
RecvRecord getRecvRecord(@Param("id") String id);
}
至此,通过@Autowired
即可使用Mapper了。
上文的配置应该可以运行,我是配置好后整理的,也许有疏漏,如果发现不能运行,请留言,我会尽快解答。