文章目录
- 简介
- (一)学习方向
- (二)学习事项
- 一,准备工作
- 二,查询表记录
- (一)在映射器配置文件里引入结果映射元素
- (二)添加按姓名查询用户记录功能
- 1,添加按姓名查询的映射语句
- 2,在用户映射器接口里添加按姓名查询用户记录的方法
- 3,添加按姓名查询用户记录的测试方法
- 4,测试按姓名查询用户记录
- 三,插入表记录
- (一)添加插入映射语句
- (二)在用户映射器接口添加插入方法
- (三)在测试类里测试插入方法
- (四)运行插入记录测试方法
- (五)运行按姓名查询测试方法
- 四,更新表记录
- (一)在用户映射器配置文件里添加更新映射语句
- (二)在用户映射器接口添加更新方法
- (三)在测试类添加更新记录测试方法
- (四)运行更新用户记录测试方法
- 五,删除表记录
- (一)在用户映射器配置文件里添加删除映射语句
- (二)在用户映射器接口里添加删除方法
- (三)在测试类里添加删除记录测试方法
- (四)运行按编号删除记录测试方法
简介
(一)学习方向
- 使用MyBatis查询表记录
- 使用MyBatis插入表记录
- 使用MyBatis更新表记录
- 使用MyBatis删除表记录
(二)学习事项
-
要使用MyBatis执行任何创建、读取、更新和删除(CRUD)操作,您需要创建与该表相对应的普通旧Java对象(POJO)类。此类描述了将“建模”数据库表行的对象。
-
在UserMapper.xml 的配置文件中,
<mapper namespace="net.huawei.mybatis.mapper.UserMapper">
,命名空间非常重要,不能有错,必须与我们定义的package和接口一致。
一,准备工作
打开MyBatisDemo项目
二,查询表记录
上一讲《使用MyBatis实现简单查询》中,我们在UserMapper.xml里定义了两个查询语句:findById和findAll,对应地在UserMapper接口里定义了两个抽象方法:findById(int id)和findAll()。
(一)在映射器配置文件里引入结果映射元素
如果表的列名与实体的属性名不一致,比如表的register_time字段对应实体类的registerTime属性,我们就需要定义resultMap,当然一致时也可以定义。
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表的数据类型
在UserMapper.xml文件里创建结果映射元素
将UserMapper接口里抽象方法上的注解暂时注释掉
运行TestUserMapper测试类里的testFindAll()测试方法,查看结果
(二)添加按姓名查询用户记录功能
1,添加按姓名查询的映射语句
在UserMapper.xml里添加映射语句 - findByName
如果要实现按姓名模糊查询用户记录,那么语句要做如下修改
2,在用户映射器接口里添加按姓名查询用户记录的方法
在UserMapper接口里添加findByName()方法
3,添加按姓名查询用户记录的测试方法
在测试类TestUserMapper里添加测试方法testFindByName()
4,测试按姓名查询用户记录
运行测试方法testFindByName(),查看结果
三,插入表记录
(一)添加插入映射语句
在UserMapper.xml文件里添加插入映射语句
<insert id="insert" parameterType="User"
useGeneratedKeys="true" keyProperty="id">
INSERT INTO t_user(name, age, address)
VALUES(#{name}, #{age}, #{address})
</insert>
注意:
- id和parameterType分别与UserMapper接口中的insert方法的名字与参数类型一致。以#{name}的形式引用User参数的name属性,MyBatis将使用反射读取User参数该属性。#{name}中name大小写敏感。引用其它属性与此一致。
- UseGeneratedKeys="true"表明要MyBatis获取由数据库自动生成的主键;keyProperty="id"指定把获取到的主键值注入到User的id属性。
(二)在用户映射器接口添加插入方法
在UserMapper接口里添加insert()方法,方法名insert与插入映射语句里的id值保持一致
(三)在测试类里测试插入方法
在测试类TestUserMapper里添加测试方法testInsert()
@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(),查看结果
(五)运行按姓名查询测试方法
运行测试方法testFindByName(),查看结果
用户表里姓“王”的记录都被查询出来了
四,更新表记录
(一)在用户映射器配置文件里添加更新映射语句
在UserMapper.xml里添加update映射语句
<update id="update" parameterType="User">
UPDATE t_user SET name = #{name},
age = #{age},
address = #{address}
WHERE id = #{id};
</update>
(二)在用户映射器接口添加更新方法
在UserMapper接口里添加update()方法
(三)在测试类添加更新记录测试方法
在测试类TestUserMapper里添加测试方法testUpdate()
@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(),查看结果
五,删除表记录
(一)在用户映射器配置文件里添加删除映射语句
在UserMapper.xml文件里添加映射语句deleteById
注意:要设置参数类型。
<delete id="deleteById" parameterType="int">
DELETE FROM t_user WHERE id = #{id};
</delete>
(二)在用户映射器接口里添加删除方法
在UserMapper接口里添加deleteById()方法,方法名要与删除映射语句的id值保持一致
(三)在测试类里添加删除记录测试方法
在测试类TestUserMapper里添加测试方法testDeleteById()
// 按编号删除记录测试
@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(),查看结果
查看用户表记录