一文吃透Spring集成MyBatis的完整攻略
前言
Spring和MyBatis是JavaWeb开发中非常常用的两个框架,各自拥有自己的优势。而将它们集成使用则可以发挥它们的优势,更加便捷地进行开发。本文将分步骤介绍如何集成Spring和MyBatis。
环境准备
- JDK 1.8 或以上版本
- Maven 3.x 或以上版本
- Spring 5.x 或以上版本
- MyBatis 3.x 或以上版本
集成步骤
第一步:添加依赖
在Maven项目的pom.xml文件中添加Spring和MyBatis的依赖。
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.8</version>
</dependency>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<!-- 数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.6</version>
</dependency>
</dependencies>
第二步:配置数据源
在Spring的配置文件中,配置数据源,这里使用阿里巴巴的druid数据源。下面是使用MySQL数据库的数据源示例。
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/db_name" />
<property name="username" value="root" />
<property name="password" value="password" />
<!-- 配置初始化连接数、最小空闲连接数和最大连接数 -->
<property name="initialSize" value="5" />
<property name="minIdle" value="5" />
<property name="maxActive" value="20" />
<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="60000" />
<!-- 配置监控统计拦截的filters -->
<property name="filters" value="stat" />
</bean>
第三步:集成MyBatis
添加MyBatis的配置文件,并在Spring的配置文件中引入MyBatis配置文件。
MyBatis的配置文件示例:
<configuration>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!-- 配置数据源 -->
<environments default="default">
<environment id="default">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 配置MyBatis映射文件 -->
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
在Spring的配置文件中引入MyBatis配置文件:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory"/>
</bean>
第四步:使用MyBatis
定义一个User实体类,和一个UserMapper接口用于给User实体类提供CRUD操作。
User实体类:
public class User {
private Long id;
private String username;
private String password;
// 省略getter和setter方法
}
UserMapper接口:
public interface UserMapper {
User getById(Long id);
List<User> getAll();
void save(User user);
void update(User user);
void delete(Long id);
}
实现UserMapper接口:
<mapper namespace="com.example.mapper.UserMapper">
<select id="getById" resultType="com.example.entity.User">
select * from user where id=#{id}
</select>
<select id="getAll" resultType="com.example.entity.User">
select * from user
</select>
<insert id="save" parameterType="com.example.entity.User">
insert into user (username, password) values (#{username}, #{password})
</insert>
<update id="update" parameterType="com.example.entity.User">
update user set username=#{username}, password=#{password} where id=#{id}
</update>
<delete id="delete" parameterType="Long">
delete from user where id=#{id}
</delete>
</mapper>
最后,在Java代码中通过Spring注入UserMapper,即可获得User的CRUD能力:
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User getById(Long id) {
return userMapper.getById(id);
}
public List<User> getAll() {
return userMapper.getAll();
}
public void save(User user) {
userMapper.save(user);
}
public void update(User user) {
userMapper.update(user);
}
public void delete(Long id) {
userMapper.delete(id);
}
}
总结
通过上述步骤,我们就可以很轻松地集成Spring和MyBatis,实现JavaWeb应用的开发。MyBatis提供了非常丰富的映射语法,可以大幅减少Java与SQL之间的相互转化,加速开发流程,提高开发效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文吃透Spring集成MyBatis - Python技术站