IT评测·应用市场-qidao123.com

标题: Mybatis对数据库数据举行增删改查 [打印本页]

作者: 数据人与超自然意识    时间: 2024-11-27 17:10
标题: Mybatis对数据库数据举行增删改查
以下是利用IntelliJ IDEA 2021创建基于JDK 1.8的名为Mybatis的Maven项目结构,并结合Navicat操作数据库以及利用Mybatis举行增删改查操作的具体步调:
一、创建Maven项目

二、在Navicat中计划数据库表

三、配置Mybatis相关依赖及项目结构

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5.     <modelVersion>4.0.0</modelVersion>
  6.     <groupId>com.example</groupId>
  7.     <artifactId>Mybatis</artifactId>
  8.     <version>1.0-SNAPSHOT</version>
  9.     <properties>
  10.         <maven.compiler.source>8</maven.compiler.source>
  11.         <maven.compiler.target>8</maven.compiler.target>
  12.     </properties>
  13.     <dependencies>
  14.         <!-- Mybatis核心依赖 -->
  15.         <dependency>
  16.             <groupId>org.mybatis</groupId>
  17.             <artifactId>mybatis</artifactId>
  18.             <version>3.5.10</version>
  19.         </dependency>
  20.         <!-- MySQL数据库驱动依赖 -->
  21.         <dependency>
  22.             <groupId>mysql</groupId>
  23.             <artifactId>mysql-connector-java</artifactId>
  24.             <version>8.0.26</version>
  25.         </dependency>
  26.     </dependencies>
  27. </project>
复制代码
生存pom.xml文件,Maven会自动下载相关依赖到当地堆栈(如果网络和配置正常的话)。
2. 创建项目结构
- 在src/main/java目录下创建项目标包结构,比方com.example.mybatis(根据实际的GroupId和项目构造情况来定),后续的Java代码类将放在对应的包下。
- 在src/main/resources目录下创建mybatis-config.xml配置文件,用于配置Mybatis的全局设置,示例内容如下:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration
  3.         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4.         "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6.     <!-- 配置数据源,这里以MySQL为例 -->
  7.     <environments default="development">
  8.         <environment id="development">
  9.             <transactionManager type="JDBC"/>
  10.             <dataSource type="POOLED">
  11.                 <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
  12.                 <property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo?useSSL=false&amp;serverTimezone=UTC"/>
  13.                 <property name="username" value="root"/>
  14.                 <property name="password" value="your_password"/>
  15.             </dataSource>
  16.         </environment>
  17.     </environments>
  18.     <!-- 扫描Mapper接口所在的包 -->
  19.     <mappers>
  20.         <package>com.example.mybatis.mapper</package>
  21.     </mappers>
  22. </configuration>
复制代码
留意将上述配置中的数据库连接相关信息(如用户名、密码、数据库名称等)替换为你实际利用的内容。
四、创建实体类、Mapper接口及对应的Mapper XML文件

  1. package com.example.mybatis;
  2. public class User {
  3.     private Integer id;
  4.     private String username;
  5.     private String addr;
  6.     private Integer age;
  7.     // 生成对应的getter和setter方法
  8.     public Integer getId() {
  9.         return id;
  10.     }
  11.     public void setId(Integer id) {
  12.         this.id = id;
  13.     }
  14.     public String getUsername() {
  15.         return username;
  16.     }
  17.     public void setUsername(String username) {
  18.         this.username = username;
  19.     }
  20.     public String getAddr() {
  21.         return addr;
  22.     }
  23.     public void setAddr(String addr) {
  24.         this.addr = addr;
  25.     }
  26.     public Integer getAge() {
  27.         return age;
  28.     }
  29.     public void setAge(Integer age) {
  30.         this.age = age;
  31.     }
  32.     @Override
  33.     public String toString() {
  34.         return "User{" +
  35.                 "id=" + id +
  36.                 ", username='" + username + '\'' +
  37.                 ", addr='" + addr + '\'' +
  38.                 ", age=" + age +
  39.                 '}';
  40.     }
  41. }
复制代码
  1. package com.example.mybatis.mapper;
  2. import com.example.mybatis.User;
  3. import org.apache.ibatis.annotations.Delete;
  4. import org.apache.ibatis.annotations.Insert;
  5. import org.apache.ibatis.annotations.Select;
  6. import org.apache.ibatis.annotations.Update;
  7. import java.util.List;
  8. public interface UserMapper {
  9.     // 查询所有用户
  10.     @Select("SELECT * FROM user")
  11.     List<User> findAllUsers();
  12.     // 根据id查询用户
  13.     @Select("SELECT * FROM user WHERE id = #{id}")
  14.     User findUserById(Integer id);
  15.     // 新增用户
  16.     @Insert("INSERT INTO user (username, addr, age) VALUES (#{username}, #{addr}, #{age})")
  17.     int insertUser(User user);
  18.     // 更新用户信息
  19.     @Update("UPDATE user SET username = #{username}, addr = #{addr}, age = #{age} WHERE id = #{id}")
  20.     int updateUser(User user);
  21.     // 删除用户
  22.     @Delete("DELETE FROM user WHERE id = #{id}")
  23.     int deleteUser(Integer id);
  24. }
复制代码
这里利用了Mybatis的注解方式来定义SQL语句,也可以利用XML方式(下面会简单提及XML方式的配置)。
3. 创建Mapper XML文件(可选,如果采用XML方式定义SQL语句)
- 在src/main/resources目录下创建与mapper包结构对应的目录结构(即com/example/mybatis/mapper),在该目录下创建UserMapper.xml文件,内容示比方下(以查询所有用户为例,展示XML方式编写SQL语句):
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper
  3.         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4.         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.example.mybatis.mapper.UserMapper">
  6.     <select id="findAllUsers" resultMap="UserResultMap">
  7.         SELECT * FROM user
  8.     </select>
  9.     <resultMap id="UserResultMap" type="com.example.mybatis.User">
  10.         <id property="id" column="id"/>
  11.         <result property="username" column="username"/>
  12.         <result property="addr" column="addr"/>
  13.         <result property="age" column="age"/>
  14.     </resultMap>
  15. </mapper>
复制代码
同时需要在mybatis-config.xml的<mappers>标签中配置对应的Mapper XML文件路径(如果采用XML方式),比方:
  1. <mappers>
  2.     <mapper resource="com/example/mybatis/mapper/UserMapper.xml"/>
  3. </mappers>
复制代码
五、编写测试类举行增删改查操作验证

在src/test/java目录下创建测试类(比方MybatisTest),利用JUnit(需要添加JUnit依赖到pom.xml,此处省略添加依赖步调)或者直接编写main方法来测试Mybatis的增删改查功能,示例代码如下(以JUnit 5为例):
  1. package com.example.mybatis;
  2. import com.example.mybatis.mapper.UserMapper;
  3. import org.apache.ibatis.io.Resources;
  4. import org.apache.ibatis.session.SqlSession;
  5. import org.apache.ibatis.session.SqlSessionFactory;
  6. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  7. import org.junit.jupiter.api.Test;
  8. import java.io.IOException;
  9. import java.io.Reader;
  10. import java.util.List;
  11. import static org.junit.jupiter.api.Assertions.*;
  12. public class MybatisTest {
  13.     @Test
  14.     public void testFindAllUsers() throws IOException {
  15.         Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
  16.         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
  17.         SqlSession sqlSession = sqlSessionFactory.openSession();
  18.         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
  19.         List<User> userList = userMapper.findAllUsers();
  20.         assertNotNull(userList);
  21.         for (User user : userList) {
  22.             System.out.println(user);
  23.         }
  24.         sqlSession.close();
  25.     }
  26.     @Test
  27.     public void testFindUserById() throws IOException {
  28.         Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
  29.         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
  30.         SqlSession sqlSession = sqlSessionFactory.openSession();
  31.         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
  32.         User user = userMapper.findUserById(1);
  33.         assertNotNull(user);
  34.         System.out.println(user);
  35.         sqlSession.close();
  36.     }
  37.     @Test
  38.     public void testInsertUser() throws IOException {
  39.         Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
  40.         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
  41.         SqlSession sqlSession = sqlSessionFactory.openSession();
  42.         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
  43.         User newUser = new User();
  44.         newUser.setUsername("赵六");
  45.         newUser.setAddr("深圳");
  46.         newUser.setAge(26);
  47.         int result = userMapper.insertUser(newUser);
  48.         sqlSession.commit();
  49.         assertEquals(1, result);
  50.         sqlSession.close();
  51.     }
  52.     @Test
  53.     public void testUpdateUser() throws IOException {
  54.         Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
  55.         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
  56.         SqlSession sqlSession = sqlSessionFactory.openSession();
  57.         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
  58.         User updateUser = userMapper.findUserById(1);
  59.         updateUser.setUsername("张三改");
  60.         updateUser.setAddr("北京改");
  61.         updateUser.setAge(26);
  62.         int result = userMapper.updateUser(updateUser);
  63.         sqlSession.commit();
  64.         assertEquals(1, result);
  65.         sqlSession.close();
  66.     }
  67.     @Test
  68.     public void testDeleteUser() throws IOException {
  69.         Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
  70.         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
  71.         SqlSession sqlSession = sqlSessionFactory.openSession();
  72.         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
  73.         int result = userMapper.deleteUser(3);
  74.         sqlSession.commit();
  75.         assertEquals(1, result);
  76.         sqlSession.close();
  77.     }
  78. }
复制代码
上述代码中的各个测试方法分别演示了查询所有用户、根据id查询用户、新增用户、更新用户和删除用户的操作流程。
通过以上完整的步调,就完成了利用IntelliJ IDEA 2021创建名为Mybatis的Maven项目结构,并实现了基于Mybatis对数据库中user表数据的增删改查操作。在实际应用中,还可以根据具体业务需求进一步优化和扩展功能。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4