**
Spring与MyBatis整合
**
项目目录结构:
步骤:
1、 导入jar包
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--Spring单元测试-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.0</version>
</dependency>
<!--Spring核心jar包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.1.2.RELEASE</version>
</dependency>
<!--Spring事务处理-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.1.2.RELEASE</version>
</dependency>
<!--Spring整合MyBatis中间件-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
2、 加入xml位置
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
3、 写实体类
需要在数据库中创建对应的表,根据实体类自己创建
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Dept {//dept
private Byte deptno;
private String dname;
private String loc;
//……getter/setter、默认构造方法、全参构造方法、toString
}
4、 Dao
public interface DeptMapper {
int deleteByPrimaryKey(Byte deptno);
int insert(Dept record);
int insertSelective(Dept record);
Dept selectByPrimaryKey(Byte deptno);
int updateByPrimaryKeySelective(Dept record);
int updateByPrimaryKey(Dept record);
}
5、 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zparkep.dao.DeptMapper">
<resultMap id="BaseResultMap" type="dept">
<constructor>
<idArg column="deptno" javaType="java.lang.Byte" jdbcType="TINYINT" />
<arg column="dname" javaType="java.lang.String" jdbcType="VARCHAR" />
<arg column="loc" javaType="java.lang.String" jdbcType="VARCHAR" />
</constructor>
</resultMap>
<sql id="Base_Column_List">
deptno, dname, loc
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Byte" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from tb_dept
where deptno = #{deptno,jdbcType=TINYINT}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Byte">
delete from tb_dept
where deptno = #{deptno,jdbcType=TINYINT}
</delete>
<insert id="insert" parameterType="dept">
insert into tb_dept (deptno, dname, loc
)
values (#{deptno,jdbcType=TINYINT}, #{dname,jdbcType=VARCHAR}, #{loc,jdbcType=VARCHAR}
)
</insert>
<insert id="insertSelective" parameterType="dept">
insert into tb_dept
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="deptno != null">
deptno,
</if>
<if test="dname != null">
dname,
</if>
<if test="loc != null">
loc,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="deptno != null">
#{deptno,jdbcType=TINYINT},
</if>
<if test="dname != null">
#{dname,jdbcType=VARCHAR},
</if>
<if test="loc != null">
#{loc,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="dept">
update tb_dept
<set>
<if test="dname != null">
dname = #{dname,jdbcType=VARCHAR},
</if>
<if test="loc != null">
loc = #{loc,jdbcType=VARCHAR},
</if>
</set>
where deptno = #{deptno,jdbcType=TINYINT}
</update>
<update id="updateByPrimaryKey" parameterType="dept">
update tb_dept
set dname = #{dname,jdbcType=VARCHAR},
loc = #{loc,jdbcType=VARCHAR}
where deptno = #{deptno,jdbcType=TINYINT}
</update>
</mapper>
6、 写MyBatis配置文件
<?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="logImpl" value="STDOUT_LOGGING"/>
</settings>
<!--给指定包下所有的类生成别名,别名首字母小写-->
<typeAliases>
<package name ="com.zparkep.entity" />
</typeAliases>
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<property name="helperDialect" value="mysql"/>
</plugin>
</plugins>
</configuration>
7、 写Spring配置文件
<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.zparkep"/>
<!-- 配置数据源 -->
<bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/db_test?useSSL=false&serverTimezone=UTC&characterEncoding=utf8&useUnicode=true</value>
</property>
<property name="username"><value>root</value></property>
<property name="password"><value>root</value></property>
</bean>
<!-- 创建SqlSessionFactory,同时指定数据源-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="ds" />
<!-- 自动扫描mappers.xml文件-->
<property name="mapperLocations" value="classpath*:mapper/*.xml" />
<property name="configLocation" value="classpath:mybatisCfg.xml"/>
</bean>
<!-- 注册Mapper -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.zparkep.dao" />
</bean>
</beans>