MyBatis实战:编写接口与映射文件,实现用户表增查并测试
好的,下面是使用MyBatis完成上述功能的示例代码。 1. 编写 `UsersMapper.java` 接口文件 首先,我们定义一个 `UsersMapper` 接口,用于声明数据库操作的方法。 ```java package com.example.mapper; import com.example.model.User; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Select; public interface UsersMapper { @Insert("INSERT INTO user (name, email) VALUES (#{name}, #{email})") void insertUser(User user); @Select("SELECT * FROM user WHERE id = #{id}") User selectUserById(int id); } ``` 2. 编写 `usersmapper.xml` 接口映射文件 接下来,我们创建一个 MyBatis 的 XML 映射文件 `usersmapper.xml`,其中包含 SQL 语句。 ```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="com.example.mapper.UsersMapper"> <insert id="insertUser" parameterType="com.example.model.User"> INSERT INTO user (name, email) VALUES (#{name}, #{email}) </insert> <select id="selectUserById" parameterType="int" resultType="com.example.model.User"> SELECT * FROM user WHERE id = #{id} </select> </mapper> ``` 3. 实现 `user` 表添加一条记录方法 在 `UsersMapper` 接口中已经定义了 `insertUser` 方法,该方法会将用户信息插入到 `user` 表中。 4. 实现主键查询 `user` 表方法 同样地,在 `UsersMapper` 接口中已经定义了 `selectUserById` 方法,该方法会根据主键 ID 查询 `user` 表中的记录。 5. 主函数中测试 我们在主函数中进行测试。假设你已经配置好了 MyBatis 环境,并且有一个 `User` 类和相应的数据库连接配置。 User.java ```java package com.example.model; public class User { private int id; private String name; private String email; // Getters and Setters public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } ``` Main.java ```java package com.example; import com.example.mapper.UsersMapper; import com.example.model.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.Reader; public class Main { public static void main(String[] args) throws IOException { String resource = "mybatis-config.xml"; // MyBatis配置文件路径 Reader reader = Resources.getResourceAsReader(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); SqlSession session = sqlSessionFactory.openSession(); try { UsersMapper usersMapper = session.getMapper(UsersMapper.class); // 插入一条记录 User newUser = new User(); newUser.setName("John Doe"); newUser.setEmail("johndoe@example.com"); usersMapper.insertUser(newUser); session.commit(); // 提交事务 // 根据ID查询记录 User user = usersMapper.selectUserById(newUser.getId()); System.out.println("User ID: " + user.getId()); System.out.println("User Name: " + user.getName()); System.out.println("User Email: " + user.getEmail()); } finally { session.close(); // 关闭会话 } } } ``` mybatis-config.xml 确保你有一个 MyBatis 配置文件 `mybatis-config.xml`,内容如下: ```xml <?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> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/yourdatabase"/> <property name="username" value="yourusername"/> <property name="password" value="yourpassword"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/example/mapper/usersmapper.xml"/> </mappers> </configuration> ``` 以上代码展示了如何使用 MyBatis 完成对 `user` 表的增删查改操作。请根据你的实际需求调整数据库连接配置和 SQL 语句。 ######[AI写代码神器 | 1458点数解答 | 2024-11-19 14:41:42]
- 批处理文件:依据参数表.xlsx精准修改文件.txt中p、t、s值(GPT | 811点数解答 | 2024-12-05 12:58:37)419
- 用批处理和Python实现“参数表.xlsx”与“文件.txt”数据匹配及修改(讯飞星火 | 531点数解答 | 2024-12-05 13:20:42)391
- 批处理文件:依据参数表.xlsx精准修改文件.txt特定参数值(阿里通义 | 495点数解答 | 2024-12-05 13:22:26)369
- Linux 系统用户、组及文件操作全流程实践(字节豆包 | 1142点数解答 | 2026-03-20 17:29:38)40
- 📊 C++ 高效求解社交网络用户关注量与粉丝量(图论出度入度基础)(DeepSeek | 1799点数解答 | 2026-04-10 21:44:39)21
- Java 实战:创建 Vehicle 接口并在 Bike 类实现,T4 类调用启动与停止方法(字节豆包 | 130点数解答 | 2024-09-19 17:40:54)436
- Python 实现移位与仿射密码:精准加密解密及关键逻辑解析(字节豆包 | 798点数解答 | 2024-12-18 15:55:47)282
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)384
- Python 利用 win32com 库:将 Excel 转换为 A4 横向 PDF 并单独打印首列(字节豆包 | 507点数解答 | 2025-03-10 15:48:12)337
- 车载系统 UML 类图设计:涵盖 Car、Engine、娱乐系统等的完整类定义与关系解析 (字节豆包 | 760点数解答 | 2024-08-15 22:51:04)332
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)501
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)389