文章目录

  • Ⅰ、查询表记录
    • (Ⅰ)、在映射器配置文件里引入结果映射元素
    • (Ⅱ)、添加按姓名查询用户记录功能
      • 1)、在UserMapper.xml里添加映射语句 - findByName
      • 2)、在UserMapper接口里添加findByName()方法
      • 3)、在测试类TestUserMapper里添加测试方法testFindByName()
      • 4)、运行测试方法testFindByName(),查看结果
  • Ⅱ、插入表记录
    • (Ⅰ)、在UserMapper.xml里增加映射语句 -insert
    • (Ⅱ)、在UserMapper接口里增加insert()方法
    • (Ⅲ)、在测试类TestUserMapper里添加测试方法testInsert()
    • (Ⅳ)、运行测试方法testInsert(),查看结果
    • (Ⅴ)、运行测试方法testFindByName(),查看结果
  • Ⅲ、更新表记录
    • (Ⅰ)、在UserMapper.xml里增加映射语句 -update
    • (Ⅱ)、在UserMapper接口里增加update()方法
    • (Ⅲ)、在测试类TestUserMapper里添加测试方法testUpdate()
    • (Ⅳ)、运行测试方法testUpdate(),查看结果
  • Ⅳ、删除表记录
    • (Ⅰ)、在UserMapper.xml文件里添加映射语句deleteById
    • (Ⅱ)、在UserMapper接口里增加deleteById()方法
    • (Ⅲ)、在测试类TestUserMapper里添加测试方法testDeleteById()
    • (Ⅳ)、运行测试方法testDeleteById(),查看结果

Ⅰ、查询表记录

  • 打开MyBatisDemo项目,笔记01中我在UserMapper.xml里定义了两个查询语句:findById和findAll,对应的在UserMapper接口里定义了两个抽象方法:findById(int id)和findAll()。

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

  • 运行测试类TestUserMapper里的testFindAll()测试方法,查看结果

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

1)、在UserMapper.xml里添加映射语句 - findByName

  • 如果要实现按姓名模糊查询用户记录,那么要用SELECT * FROM t_user WHERE name LIKE CONCAT(#{name},"%");

2)、在UserMapper接口里添加findByName()方法

List<User> findByName(String name);

3)、在测试类TestUserMapper里添加测试方法testFindByName()

@Testpublic void testFindByName() {String name = "王";List<User> users = userMapper.findByName(name);if (users.size() > 0) {users.forEach(user -> System.out.println(user));}else {System.out.println("姓名为[" + name + "]的记录未找到。");}}

4)、运行测试方法testFindByName(),查看结果

  • 目前用户表里姓“王”的只有一台哦记录,待会儿我们再插入一条姓王的记录,再次运行该查询方法,就会显示全部姓“王”的记录。

Ⅱ、插入表记录

(Ⅰ)、在UserMapper.xml里增加映射语句 -insert

<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()方法

(Ⅲ)、在测试类TestUserMapper里添加测试方法testInsert()

@Test
public void testInsert() {User user = new User();user.setName("王雨涵");user.setAge(25);user.setAddress("龙马潭区长桥路二号");int count = userMapper.insert(user);sqlSession.commit(); // 提交数据库操作if (count > 0) {System.out.println("记录插入成功!");System.out.println("插入新记录:" + user);}else {System.out.println("记录插入失败!");}
}
  • 注意:对于增删改操作,必须要执行SQL会话对象的commit()方法才能生效。

(Ⅳ)、运行测试方法testInsert(),查看结果

  • 大家可以看到,id=4,这个编号是数据库自动生成的主键值,是因为插入映射语句设置了UseGeneratedKeys=“true”。

(Ⅴ)、运行测试方法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()方法

int update(User user);

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

@Testpublic void testUpdate() {int id = 4;User user = userMapper.findById(id);System.out.println("更新前的记录:" + user);user.setName("李小海");user.setAge(18);user.setAddress("北京市朝阳区");int count = userMapper.update(user);sqlSession.commit(); //提交数据库if (count > 0){System.out.println("更新成功!");System.out.println("更新后记录:" + userMapper.findById(id));}else {System.out.println("更新失败!");}}

(Ⅳ)、运行测试方法testUpdate(),查看结果

Ⅳ、删除表记录

(Ⅰ)、在UserMapper.xml文件里添加映射语句deleteById

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

(Ⅱ)、在UserMapper接口里增加deleteById()方法

int deleteById(int id);

(Ⅲ)、在测试类TestUserMapper里添加测试方法testDeleteById()

@Testpublic void testDeleteById() {int id = 4;User user = userMapper.findById(id);System.out.println("待删除的记录:" + user);userMapper.deleteById(id);sqlSession.commit(); //提交数据库System.out.println("编号为[" + id + "]的记录删除成功!");user = userMapper.findById(id);if (user != null) {System.out.println(user);} else {System.out.println("编号为[" + id + "]的用户未找到。");}}

(Ⅳ)、运行测试方法testDeleteById(),查看结果

MyBatis框架学习笔记02:使用MyBatis实现CRUD操作相关推荐

  1. 2021年3月8日:MyBatis框架学习笔记02:利用MyBatis实现CRUD操作

    MyBatis框架学习笔记02:利用MyBatis实现CRUD操作 在第一节课中我们在UserMapper.xml里定义了两个查询语句:findById和findAll,对应的在UserMapper接 ...

  2. MyBatis框架学习笔记02:利用MyBatis实现CRUD操作

    文章目录 一.打开MyBatisDemo项目 二.查询表记录 (一)在映射器配置文件里引入结果映射元素 (二)添加按姓名查询用户记录功能 1.在UserMapper.xml里添加映射语句 - find ...

  3. mybatis框架--学习笔记(下)

    上篇:mybatis框架--学习笔记(上):https://blog.csdn.net/a745233700/article/details/81034021 8.高级映射: (1)一对一查询: ①使 ...

  4. mybatis框架--学习笔记(上)

    使用JDBC操作数据库的问题总结: (1)数据库连接,使用时创建,不使用时立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能. 设想:使用数据库连接池管理数据库连接. (2) ...

  5. [Spring+SpringMVC+Mybatis]框架学习笔记(四):Spring实现AOP

    上一章:[Spring+SpringMVC+Mybatis]框架学习笔记(三):Spring实现JDBC 下一章:[Spring+SpringMVC+Mybatis]框架学习笔记(五):SpringA ...

  6. MyBatis框架学习笔记(3)——B站动力节点

    文章目录 (0)介绍 (1)返回主键的标签 (2)UUID的概念 (3)update时< set >标签的使用 (4)表与表的关联关系 一对多关联 多对一关联 一对一关联 多对多关联 (5 ...

  7. MyBatis框架学习笔记(1)——B站动力节点

    文章目录 001- 框架概述 1.1 软件开发常用结构 1.2 框架是什么 1.3 回顾JDBC编程 1.4 MyBatis框架概述 002- MyBatis框架快速入门 2.1 入门案例 2.2 M ...

  8. JDBC 学习笔记 day02 用 PreparedStatement 实现 CRUD 操作

    JDBC 学习笔记 day02 PreparedStatement 相比于 Statement 的好处 PreparedStatement 实现 增,删,改 操作 PreparedStatement ...

  9. MyBatis框架学习笔记01:初生牛犊

    文章目录 1. 什么是MyBatis 创建数据库 演示MyBatis基本使用 1.创建Maven项目 创建实体类 创建用户实体类关系映射配置文件 创建测试类 完成测试 1. 什么是MyBatis My ...

最新文章

  1. 【原创】Linux环境下的图形系统和AMD R600显卡编程(11)——R600指令集
  2. linux命令查看cpu负载,怎么使用Linux命令查看CPU使用率
  3. Ubuntu 18.x 环境下mysql创建用户并更改用户权限
  4. 敏捷开发组织【北京及其他地区QQ群】【长三角QQ群】【珠三角QQ群】
  5. vue之自行实现派发与广播-dispatch与broadcast
  6. Python Tricks(十)—— 递归修改文件名
  7. POJ 3126 Prime Path 简单广搜(BFS)
  8. Arturia Analog Lab for Mac - 原始混合合成器
  9. 微信公众号开发获取code
  10. html博客音乐播放器代码大全,HTML博客音乐播放器代码大全
  11. 基于FPGA的智能家具之PM2.5传感器,温湿度传感器驱动设计
  12. Redis 中的 standalone(单机模式)配置说明和分析
  13. 星期五五–大数据,Doppio和假Linus Torvalds
  14. JavaScript的三级联动
  15. 查询薪金比“SMITH”或者“ALLEN”多的所有员工的编号、姓名、部门名称、领导姓名、部门人数、平均工资、最高及最低工资
  16. openwrt修改lan口地址失败_wr703n 刷openwrt 网口是lan口,怎样改成wan口?
  17. 硬盘测试之influx-stress
  18. hadoop集成kerberos
  19. vcruntime140_1.dll
  20. 素数,质数,奇数,合数,偶数这些你都能分清吗?

热门文章

  1. B2B电子商务网站建设怎么做:B2B系统开发流程、语言、架构解答
  2. r语言赋值为na_R语言数据框中,用0替代NA缺失值
  3. 硬核机器学习干货,手把手教你写KNN!
  4. Excel VBA:更改图表数据标记大小和曲线粗细
  5. 别再说你不会!java嵌入式开发教程
  6. known_hosts to get rid of this message问题
  7. Mybatis3 继续盘!
  8. 欢迎访问我的个人网站!
  9. 小峰峰的pat甲级刷题记录1020
  10. 一款在线视频 App,基于 Material Design + MVP + RxJava + Retrofit + Realm + Glide