mybatis 增删改查

2024-01-08 17:34:02

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 的配置文件中配置了相应的事务管理。

文章来源:https://blog.csdn.net/nbspzs/article/details/135460892
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。