21天掌握javaweb--->第3天:MyBatis基础与Spring Boot集成
21天掌握JavaWeb--->MyBatis基础与Spring Boot集成
MyBatis简介
MyBatis是一个流行的Java持久层框架,它简化了与关系型数据库的交互。通过将SQL语句与Java代码进行映射,MyBatis提供了一种方便、灵活的方式来执行数据库操作。它支持动态SQL、缓存机制和插件扩展,使得开发人员能够更高效地编写和管理数据库访问代码。作为一种轻量级框架,MyBatis在Java开发中被广泛应用于构建可靠的持久化解决方案。
配置MyBatis与Spring Boot集成
1. 项目配置
首先,通过start.spring.io创建工程,并选择MySQL Driver
、Spring Web
、MyBatis Framework
基本依赖。
2. 定义Mapper接口
创建专门存放mapper接口的包:cn.springdoc.mapper
,并在其中定义一个FooMapper
:
package cn.springdoc.mapper;
import java.time.LocalDateTime;
import org.apache.ibatis.annotations.Mapper;
@Mapper // 使用Mapper注解
public interface FooMapper {
/**
* 获取数据库的当前时间
* @return
*/
LocalDateTime now();
}
3. 创建Mapper映射文件
在src/main/resources
目录下创建mapper
目录,专门用于存放mapper映射文件。创建FooMapper
接口的映射文件FooMapper.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="cn.springdoc.mapper.FooMapper">
<select id="now" resultType="java.time.LocalDateTime">
SELECT NOW();
</select>
</mapper>
4. 数据源和MyBatis配置
在application.properties
文件中配置数据源和mapper接口的位置:
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis.mapper-locations=classpath:mapper/*.xml
5. 启动类配置
启动类加入@MapperScan
注解指定mapper接口的位置:
@SpringBootApplication
@MapperScan("com.example.mapper")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
编写简单的Mapper和SQL
1. Mapper接口
定义一个UserMapper
接口:
public interface UserMapper {
User selectUserById(Long id);
void insertUser(User user);
}
2. Mapper XML映射文件
编写UserMapper
的XML映射文件UserMapper.xml
:
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
<resultMap id="BaseResultMap" type="com.example.entity.User">
<id column="id" property="id" jdbcType="BIGINT" />
<result column="username" property="username" jdbcType="VARCHAR" />
<result column="password" property="password" jdbcType="VARCHAR" />
</resultMap>
<select id="selectUserById" resultMap="BaseResultMap">
SELECT * FROM user WHERE id = #{id}
</select>
<insert id="insertUser">
INSERT INTO user (username, password) VALUES (#{username}, #{password})
</insert>
</mapper>
3. 使用Mapper
在Service或Controller中使用UserMapper
:
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User getUserById(Long id) {
return userMapper.selectUserById(id);
}
public void createUser(User user) {
userMapper.insertUser(user);
}
}
总结
通过上述步骤,我们完成了MyBatis与Spring Boot的集成,并编写了简单的Mapper和SQL。MyBatis的优势在于其简单性和灵活性,能够快速地与Spring Boot集成,提供强大的数据库操作能力。通过使用MyBatis,我们可以更加专注于业务逻辑的实现,而不是数据库操作的细节,从而提高开发效率和代码质量。