Spring web项目开发
一、Spring MVC 项目搭建
二、Spring MVC 集成 MyBatis
三、Spring MVC 实现CRUD功能
POM 配置
<properties>
<spring.version>5.1.2.RELEASE</spring.version>
<mybatis.version>3.4.6</mybatis.version>
<mybatis-spring.version>1.3.2</mybatis-spring.version>
<mysql.version>5.1.37</mysql.version>
<druid.version>1.1.13</druid.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>
<!-- 数据库 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
</dependencies>
<build>
<resources>
<!-- 缺少此配置会导致编译后的包中无XML文件 -->
<resource>
<directory>${basedir}/src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
SqlSessionFactory 配置
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis-config/mybatis-config.xml" />
<property name="mapperLocations" value="classpath*:spring/mybatis/sample/**/mapper/*.xml" />
</bean>
两种映射方式
- 基于
namespace.id
的方式 - 基于
interface
的方式
示例
UserMapper.xml
<?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="spring.mybatis.sample.basic.user.dao.UserDao">
<select id="queryOneUser" parameterType="spring.mybatis.sample.basic.user.dao.domain.User"
resultType="spring.mybatis.sample.basic.user.dao.domain.User">
SELECT
id as id,
user_name as userName,
age as age,
sex as sex,
address as address
FROM SYSTEM_USER
<trim prefix="WHERE" prefixOverrides="OR | AND">
<if test="id != null and id != ''">
and id = #{id}
</if>
<if test="userName != null and userNmae != ''">
and user_name = #{userName}
</if>
<if test="age != null">
and age = #{age}
</if>
<if test="sex != null">
and sex = #{sex}
</if>
<if test="address != null and address != ''">
and address = #{address}
</if>
</trim>
</select>
</mapper>
- 基于
namespace.id
的方式
<bean class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="sqlSessionFactory" />
</bean>
@Repository("userDao")
public class UserDaoImpl implements UserDao {
@Autowired
private SqlSessionTemplate sqlSessionTemplate;
@Override
public User queryOneUser(User user) {
return this.sqlSessionTemplate.selectOne("spring.mybatis.sample.basic.user.dao.UserDao.queryOneUser", user);
}
}
- 基于
interface
的方式(无需提供Dao实现类)
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<property name="basePackage" value="spring.mybatis.sample.**.dao"/>
</bean>
package spring.mybatis.sample.basic.user.dao;
import spring.mybatis.sample.basic.user.dao.domain.User;
public interface UserDao {
User queryOneUser(User user);
}
代码结构