> 文章列表 > 使用MyBatis实现CRUD操作

使用MyBatis实现CRUD操作

使用MyBatis实现CRUD操作

文章目录

  • 简介
    • (一)学习方向
    • (二)学习事项
  • 一,准备工作
  • 二,查询表记录
    • (一)在映射器配置文件里引入结果映射元素
    • (二)添加按姓名查询用户记录功能
      • 1,添加按姓名查询的映射语句
      • 2,在用户映射器接口里添加按姓名查询用户记录的方法
      • 3,添加按姓名查询用户记录的测试方法
      • 4,测试按姓名查询用户记录
  • 三,插入表记录
    • (一)添加插入映射语句
    • (二)在用户映射器接口添加插入方法
    • (三)在测试类里测试插入方法
    • (四)运行插入记录测试方法
    • (五)运行按姓名查询测试方法
  • 四,更新表记录
    • (一)在用户映射器配置文件里添加更新映射语句
    • (二)在用户映射器接口添加更新方法
    • (三)在测试类添加更新记录测试方法
    • (四)运行更新用户记录测试方法
  • 五,删除表记录
    • (一)在用户映射器配置文件里添加删除映射语句
    • (二)在用户映射器接口里添加删除方法
    • (三)在测试类里添加删除记录测试方法
    • (四)运行按编号删除记录测试方法

简介

使用MyBatis实现CRUD操作

(一)学习方向

  1. 使用MyBatis查询表记录
  2. 使用MyBatis插入表记录
  3. 使用MyBatis更新表记录
  4. 使用MyBatis删除表记录

(二)学习事项

  1. 要使用MyBatis执行任何创建、读取、更新和删除(CRUD)操作,您需要创建与该表相对应的普通旧Java对象(POJO)类。此类描述了将“建模”数据库表行的对象。

  2. 在UserMapper.xml 的配置文件中,<mapper namespace="net.huawei.mybatis.mapper.UserMapper"> ,命名空间非常重要,不能有错,必须与我们定义的package和接口一致。

一,准备工作

打开MyBatisDemo项目
使用MyBatis实现CRUD操作

二,查询表记录

上一讲《使用MyBatis实现简单查询》中,我们在UserMapper.xml里定义了两个查询语句:findById和findAll,对应地在UserMapper接口里定义了两个抽象方法:findById(int id)和findAll()。

(一)在映射器配置文件里引入结果映射元素

如果表的列名与实体的属性名不一致,比如表的register_time字段对应实体类的registerTime属性,我们就需要定义resultMap,当然一致时也可以定义。

MyBatis里jdbcType与javaType的对应关系

jdbcType javaType
CHAR String
VARCHAR String
LONGVARCHAR String
NUMERIC java.math.BigDecimal
DECIMAL java.math.BigDecimal
BIT boolean
BOOLEAN boolean
TINYINT byte
SMALLINT short
INTEGER int
BIGINT long
REAL float
FLOAT double
DOUBLE double
BINARY byte[]
VARBINARY byte[]
LONGVARBINARY byte[]
DATE java.sql.Date
TIME java.sql.Time
TIMESTAMP java.sql.Timestamp
CLOB Clob
BLOB Blob
ARRAY Array
DISTINCT mapping of underlying type
STRUCT Struct
REF Ref
DATALINK java.net.URL

t_user表的数据类型
使用MyBatis实现CRUD操作
使用MyBatis实现CRUD操作
在UserMapper.xml文件里创建结果映射元素
使用MyBatis实现CRUD操作将UserMapper接口里抽象方法上的注解暂时注释掉
使用MyBatis实现CRUD操作
运行TestUserMapper测试类里的testFindAll()测试方法,查看结果
使用MyBatis实现CRUD操作

(二)添加按姓名查询用户记录功能

1,添加按姓名查询的映射语句

在UserMapper.xml里添加映射语句 - findByName
使用MyBatis实现CRUD操作如果要实现按姓名模糊查询用户记录,那么语句要做如下修改
使用MyBatis实现CRUD操作

2,在用户映射器接口里添加按姓名查询用户记录的方法

在UserMapper接口里添加findByName()方法
使用MyBatis实现CRUD操作

3,添加按姓名查询用户记录的测试方法

在测试类TestUserMapper里添加测试方法testFindByName()
使用MyBatis实现CRUD操作

4,测试按姓名查询用户记录

运行测试方法testFindByName(),查看结果
使用MyBatis实现CRUD操作

三,插入表记录

(一)添加插入映射语句

在UserMapper.xml文件里添加插入映射语句

<insert id="insert" parameterType="User"useGeneratedKeys="true" keyProperty="id">INSERT INTO t_user(name, age, address)VALUES(#{name}, #{age}, #{address})
</insert>

注意:

  1. id和parameterType分别与UserMapper接口中的insert方法的名字与参数类型一致。以#{name}的形式引用User参数的name属性,MyBatis将使用反射读取User参数该属性。#{name}中name大小写敏感。引用其它属性与此一致。
  2. UseGeneratedKeys="true"表明要MyBatis获取由数据库自动生成的主键;keyProperty="id"指定把获取到的主键值注入到User的id属性。

使用MyBatis实现CRUD操作

(二)在用户映射器接口添加插入方法

在UserMapper接口里添加insert()方法,方法名insert与插入映射语句里的id值保持一致
使用MyBatis实现CRUD操作
使用MyBatis实现CRUD操作

(三)在测试类里测试插入方法

在测试类TestUserMapper里添加测试方法testInsert()
使用MyBatis实现CRUD操作

@Test                                        
public void testInsert() {                   // 创建用户对象                                User user = new User();                  // 设置对象属性                                user.setName("王雨涵");                     user.setAge(30);                         user.setAddress("龙马潭区长桥路2号");            // 插入用户记录                                int count = userMapper.insert(user);     // 提交数据库操作                               sqlSession.commit();                     // 判断插入记录是否成功                            if (count > 0) {                         System.out.println("恭喜,记录插入成功~");    System.out.println("插入的新记录:" + user);} else {                                 System.out.println("遗憾,记录插入失败~");    }                                        
}                                            

注意:对于增删改操作,必须要执行SQL会话对象的commit()方法才能生效。

(四)运行插入记录测试方法

运行测试方法testInsert(),查看结果
使用MyBatis实现CRUD操作

(五)运行按姓名查询测试方法

运行测试方法testFindByName(),查看结果
使用MyBatis实现CRUD操作
用户表里姓“王”的记录都被查询出来了

四,更新表记录

(一)在用户映射器配置文件里添加更新映射语句

在UserMapper.xml里添加update映射语句
使用MyBatis实现CRUD操作

<update id="update" parameterType="User">UPDATE t_user SET name = #{name},age = #{age},address = #{address} WHERE id = #{id};
</update>

(二)在用户映射器接口添加更新方法

在UserMapper接口里添加update()方法
使用MyBatis实现CRUD操作
使用MyBatis实现CRUD操作

(三)在测试类添加更新记录测试方法

在测试类TestUserMapper里添加测试方法testUpdate()

使用MyBatis实现CRUD操作

@Test // 测试更新用户记录                                    
public void testUpdate() {                           // 查找id为4的用户记录                                   User user = userMapper.findById(4);              // 输出更新前的记录                                      System.out.println("更新前的记录:" + user);            // 修改用户对象                                        user.setName("梁辰兴");                             user.setAge(25);                                 user.setAddress("北京朝阳区北苑路6号楼");                  // 更新用户记录                                        int count = userMapper.update(user);             // 判断更新是否成功                                      if (count > 0) {                                 // 提交数据库操作                                   sqlSession.commit();                         // 提示用户更新成功                                  System.out.println("恭喜,记录更新成功~");            System.out.println("更新后的记录:" + user);        } else {                                         // 提示用户更新失败                                  System.out.println("遗憾,记录更新失败~");            }                                                
}                                                    

(四)运行更新用户记录测试方法

运行测试方法testUpdate(),查看结果
使用MyBatis实现CRUD操作

五,删除表记录

(一)在用户映射器配置文件里添加删除映射语句

在UserMapper.xml文件里添加映射语句deleteById
使用MyBatis实现CRUD操作

注意:要设置参数类型。

<delete id="deleteById" parameterType="int">DELETE FROM t_user WHERE id = #{id};
</delete>

(二)在用户映射器接口里添加删除方法

在UserMapper接口里添加deleteById()方法,方法名要与删除映射语句的id值保持一致
使用MyBatis实现CRUD操作使用MyBatis实现CRUD操作

(三)在测试类里添加删除记录测试方法

在测试类TestUserMapper里添加测试方法testDeleteById()
使用MyBatis实现CRUD操作

// 按编号删除记录测试    
@Test                                              
public void testDeleteById() {                                       // 查找id为4的用户记录                                                   int id = 4;                                                      User user = userMapper.findById(id);                             // 输出待删除的记录                                                      System.out.println("待删记录:" + user);                              // 按编号删除用户记录                                                     int count = userMapper.deleteById(id);                           // 判断删除是否成功                                                      if (count > 0) {                                                 // 提交数据库操作                                                   sqlSession.commit();                                         // 提示用户删除成功                                                  System.out.println("恭喜,编号为[" + id + "]的记录删除成功~");            } else {                                                         // 提示用户删除失败                                                  System.out.println("遗憾,编号为[" + id + "]的记录删除失败~");            }                                                                
}                                                                    

(四)运行按编号删除记录测试方法

运行测试方法testDeleteById(),查看结果
使用MyBatis实现CRUD操作

查看用户表记录
使用MyBatis实现CRUD操作

风尚购物网