MyBatis 是一种持久化框架,主要用于简化数据库访问代码的编写。它允许开发者使用 XML 或注解来配置 SQL 映射,并提供了自动将数据库操作映射到 Java 对象的功能。以下是 MyBatis 中的基本增删改查操作的示例:
?1. 增加(Insert):
使用 MyBatis 进行插入操作时,通常需要编写一个对应的 SQL 映射。
XML 映射文件:
xml
<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
? <insert id="insertUser" parameterType="com.example.User">
? ? INSERT INTO users (id, username, email) VALUES (#{id}, #{username}, #{email})
? </insert>
</mapper>
Java 代码:
java
// User.java
package com.example;
public class User {
? private int id;
? private String username;
? private String email;
? // getters and setters
}
// UserMapper.java
package com.example;
public interface UserMapper {
? void insertUser(User user);
}
?2. 删除(Delete):
XML 映射文件:
xml
<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
? <delete id="deleteUserById" parameterType="int">
? ? DELETE FROM users WHERE id = #{id}
? </delete>
</mapper>
Java 代码:
java
// UserMapper.java
package com.example;
public interface UserMapper {
? void deleteUserById(int userId);
}
?3. 更新(Update):
XML 映射文件:
xml
<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
? <update id="updateUser" parameterType="com.example.User">
? ? UPDATE users SET username = #{username}, email = #{email} WHERE id = #{id}
? </update>
</mapper>
Java 代码:
java
// UserMapper.java
package com.example;
public interface UserMapper {
? void updateUser(User user);
}
?4. 查询(Select):
XML 映射文件:
xml
<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
? <select id="getUserById" parameterType="int" resultType="com.example.User">
? ? SELECT * FROM users WHERE id = #{id}
? </select>
</mapper>
Java 代码:
java
// UserMapper.java
package com.example;
public interface UserMapper {
? User getUserById(int userId);
}
以上示例中,User 类表示数据库表的结构,UserMapper 接口定义了数据库操作的方法,而 XML 映射文件则包含了相应的 SQL 语句。在实际应用中,你需要在 MyBatis 的配置文件中指定这些映射文件,并使用 SqlSessionFactory 和 SqlSession 来执行数据库操作。
在使用 MyBatis 进行数据库操作时,通常会有一个 Service 层来处理业务逻辑,而 Controller 层负责处理用户请求和响应。以下是一个简单的 Spring MVC 的示例,演示了如何在 Controller 中调用 MyBatis Service。
假设你有一个名为 `UserService` 的服务类,该类包含了前面提到的 MyBatis 操作方法,然后你可以在 Controller 中注入并调用该服务类。
?1. Service 类:
java
// UserService.java
package com.example;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
? @Autowired
? private UserMapper userMapper;
? public void addUser(User user) {
? ? userMapper.insertUser(user);
? }
? public void deleteUserById(int userId) {
? ? userMapper.deleteUserById(userId);
? }
? public void updateUser(User user) {
? ? userMapper.updateUser(user);
? }
? public User getUserById(int userId) {
? ? return userMapper.getUserById(userId);
? }
}
?2. Controller 类:
java
// UserController.java
package com.example;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping("/users")
public class UserController {
? @Autowired
? private UserService userService;
? @PostMapping("/add")
? @ResponseBody
? public String addUser(@RequestBody User user) {
? ? userService.addUser(user);
? ? return "User added successfully!";
? }
? @GetMapping("/delete/{id}")
? @ResponseBody
? public String deleteUser(@PathVariable("id") int userId) {
? ? userService.deleteUserById(userId);
? ? return "User deleted successfully!";
? }
? @PostMapping("/update")
? @ResponseBody
? public String updateUser(@RequestBody User user) {
? ? userService.updateUser(user);
? ? return "User updated successfully!";
? }
? @GetMapping("/{id}")
? @ResponseBody
? public User getUserById(@PathVariable("id") int userId) {
? ? return userService.getUserById(userId);
? }
}
在上述示例中,`UserController` 使用 `@Autowired` 注解来注入 `UserService`,然后在各个请求处理方法中调用 `UserService` 中的方法来执行相应的数据库操作。 `@PostMapping` 和 `@GetMapping` 注解用于映射 HTTP POST 和 GET 请求,`@ResponseBody` 注解表示返回的内容直接作为响应体。
请确保在你的 Spring 配置中启用了注解扫描,以便正确扫描和实例化这些类。这个示例假设你已经正确配置了 Spring MVC 和 MyBatis,并且在 Spring 的配置文件中配置了相应的事务管理。