介绍
MyBatis是一个用于访问关系数据库的Java持久化框架。它可以将Java对象和关系数据库之间进行映射,使得开发者可以更加方便地进行数据持久化操作。
开始使用MyBatis
安装
首先,我们需要安装MyBatis。可以通过以下方式安装:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
配置
在使用MyBatis之前,我们需要进行一些配置。首先,我们需要创建一个mybatis-config.xml文件,用于配置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="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
这个配置文件会将数据库中的下划线命名方式转换为Java中的驼峰式命名方式。
接下来,我们需要创建一个Mapper文件,用于定义SQL语句:
<?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.example.mapper.UserMapper">
<select id="getUserById" parameterType="int" resultType="com.example.entity.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
这个Mapper文件会定义一个名为”getUserById”的SQL语句,用于查询一条用户记录。
最后,我们需要创建一个SqlSessionFactory对象,用于创建SqlSession对象:
public class MyBatisUtil {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
}
}
这个工具类会读取mybatis-config.xml文件,并创建一个SqlSessionFactory对象。我们可以通过调用getSqlSession方法来获取一个SqlSession对象。
现在,我们可以使用MyBatis来进行数据持久化操作了。
数据持久化
插入数据
首先,我们需要创建一个实体类:
public class User {
private int id;
private String name;
private int age;
// getter/setter
}
这个实体类会映射到一个名为”user”的表中。
接下来,我们需要创建一个Mapper接口:
public interface UserMapper {
void insertUser(User user);
}
这个Mapper接口会定义一个插入用户信息的方法。
最后,我们需要在控制器中使用这个Mapper接口:
public class UserController {
@Autowired
private UserMapper userMapper;
@PostMapping("/users")
public void addUser(@RequestBody User user) {
userMapper.insertUser(user);
}
}
这个控制器会处理一个POST请求,插入一条用户记录。
更新数据
更新数据的操作和插入数据的操作类似。我们只需要在Mapper接口中定义一个更新用户信息的方法:
public interface UserMapper {
void updateUser(User user);
}
然后在控制器中使用这个Mapper接口即可:
public class UserController {
@Autowired
private UserMapper userMapper;
@PutMapping("/users/{id}")
public void updateUser(@PathVariable int id, @RequestBody User user) {
user.setId(id);
userMapper.updateUser(user);
}
}
这个控制器会处理一个PUT请求,更新一条用户记录。
删除数据
删除数据的操作也和插入数据的操作类似。我们只需要在Mapper接口中定义一个删除用户信息的方法:
public interface UserMapper {
void deleteUser(int id);
}
然后在控制器中使用这个Mapper接口即可:
public class UserController {
@Autowired
private UserMapper userMapper;
@DeleteMapping("/users/{id}")
public void deleteUser(@PathVariable int id) {
userMapper.deleteUser(id);
}
}
这个控制器会处理一个DELETE请求,删除一条用户记录。
查询数据
查询数据是MyBatis的核心功能之一。我们可以使用Mapper文件中定义的SQL语句来查询数据库中的数据。
首先,我们需要在Mapper接口中定义一个查询用户信息的方法:
public interface UserMapper {
User getUserById(int id);
}
然后在控制器中使用这个Mapper接口即可:
public class UserController {
@Autowired
private UserMapper userMapper;
@GetMapping("/users/{id}")
public User getUserById(@PathVariable int id) {
return userMapper.getUserById(id);
}
}
这个控制器会处理一个GET请求,查询一条用户记录。
总结
MyBatis是一个用于访问关系数据库的Java持久化框架。它可以将Java对象和关系数据库之间进行映射,使得开发者可以更加方便地进行数据持久化操作。在使用MyBatis时,我们需要进行一些配置,包括创建mybatis-config.xml文件、Mapper文件等。同时,MyBatis还提供了一系列的数据持久化操作,包括插入数据、更新数据、删除数据、查询数据等。通过使用MyBatis,可以使得数据持久化更加方便。