Titan笔记

  • 首页
  • Java
  • 数据结构
  • Web
  • C语言
  • Python
  • 杂谈
  • 逸笔挥墨
Titan笔记
分享学习、研究与开发过程中的点滴记忆
  1. 首页
  2. Java
  3. 正文

(二) 使用Mybatis完成CRUD操作

2020年5月5日 277点热度 4人点赞 0条评论

Mybatis 学习笔记

Author: Titan

Start Date: 2020-05-04

Mybatis系列的学习笔记是为本人原创系列文章。

遵循 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

转载需注明来源 Titan笔记 https://www.titan6.cn/

使用Mybatis完成CRUD操作

1. 插入数据操作

我们先在DAO接口中新增一个saveUser的方法,传入的是一个User类对象。

// 保存一个新用户数据
void saveUser(User user);

如果要进行插入数据操作,需要在Mybatis的对应DAO配置文件中进行以下的配置

<insert id="saveUser" parameterType="cn.titan6.beans.User">
    INSERT INTO user(username,address,sex,birthday)VALUES (#{username},#{address},#{sex},#{birthday});
</insert>

显然,insert标签的id对应的是DAO中的插入方法,parameterType 是要传入的实体类,这里即为User类。

在其中的SQL语句中,用#{keyName}的方式来对应实体类中的字段名,比如#{username} 对应的是 User中的username字段。

写一个Test方法来测试新增用户的插入数据操作(其中省略了session,userDao的初始化操作)

// 保存数据操作
@Test
public void addUser() {
    User user = new User();
    user.setUsername("NewTitan");
    user.setAddress("河南省信阳市");
    user.setSex("男");
    user.setBirthday(new Date());
    userDao.saveUser(user);
    session.commit();
    // 获取ID
    System.out.println(user.getId());
}

我们新建了一个User对象并设置了其相关的信息,通过调用userDao的saveUser方法,成功将这个User的信息插入到数据库中了。

需要注意的是:需要除了查询操作以外,进行增删改操作的时候Mybatis默认是存在事务关系的,并且关闭了自动提交(auto commit),如果你没有加上 session.commit() 语句的话,你会发现这个插入操作并不会成功的执行,也就是没有提交到数据库中。

2. 更新数据的操作

如果我们想根据一个用户的id来更新其用户名,地址等信息,该如何操作呢?其实和插入数据异曲同工。

首先在UserDao的映射配置文件中加入更新数据操作的映射配置

<!-- 更新数据 -->
<update id="updateUser" parameterType="cn.titan6.beans.User">
    UPDATE user SET username=#{username},address=#{address},sex=#{sex},birthday=#{birthday} WHERE id=#{id};
</update>

对应地,UserDao接口中也要有updateUser这个方法

// 更新用户数据
void updateUser(User user);

这样我们就可以用一个Test类来测试一下更新数据的方式

// 更新数据操作
@Test
public void updateUser() {
    User user = new User();
    user.setId(49);
    user.setUsername("TitanHW");
    user.setAddress("河南省信阳市");
    user.setSex("男");
    user.setBirthday(new Date());
    userDao.updateUser(user);
    session.commit();
}

3. 删除数据的操作

首先在UserDao的映射配置文件中加入删除数据操作的映射配置

<delete id="deleteUser" parameterType="Integer">
    DELETE FROM user WHERE id = #{id};
</delete>

这里我们通过 ID 来选择要进行删除的用户,parameterType可以填 Integer。

对应地,UserDao接口中也要有deleteUser这个方法

void deleteUser(Integer id);

然后在Test中调用即可

4. 根据条件查询数据

如果我们想根据一个用户的id来找到用户,或者通过用户名来模糊查询符合条件的用户,就应该这样:

在UserDao的映射配置文件的配置如下

<!-- 根据ID查询数据 -->
<select id="findById" parameterType="Integer" resultType="cn.titan6.beans.User">
    SELECT * FROM user WHERE id = #{id};
</select>
<!-- 根据Username查询数据 -->
<select id="findByName" parameterType="String" resultType="cn.titan6.beans.User">
    SELECT * FROM user WHERE username LIKE #{name};
</select>

UserDao接口:

// 根据 id 查询数据
User findById(Integer id);

// 根据Username查询数据
List<User> findByName(String username);

Test测试方法:

// 查询数据操作
@Test
public void findUser() {
    User user = userDao.findById(49);
    System.out.println(user.getUsername());
}

// 模糊查询操作
@Test
public void findUserByName() {
    List<User> users = userDao.findByName("%Titan%");
    for (User user : users) {
        System.out.println(user.getUsername() + " ---- " + user.getAddress());
    }
}

需要注意的是,在 findUserByName 的模糊查询方法中,我们需要传入一个%Titan%的LIKE字段,如果简单的传入Titan是无法模糊查询所有信息的。当然也可以在配置文件中进行处理,这里不具体介绍。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: Java Mybatis学习笔记
最后更新:2020年8月20日

Titan

兴趣广泛而无一精擅
想到什么,我总是渴望以代码的方式去呈现
永远年轻,永远热泪盈眶
Stay Hungry, Stay Foolish

点赞
< 上一篇
下一篇 >

文章评论

取消回复

Titan

兴趣广泛而无一精擅
想到什么,我总是渴望以代码的方式去呈现
永远年轻,永远热泪盈眶
Stay Hungry, Stay Foolish

逸笔挥墨 - Titan的文学天地
文章分类
  • C语言 (4)
  • Hadoop (1)
  • Hive (3)
  • Java (19)
  • JavaWeb (4)
  • Linux运维之道 (1)
  • Mybatis学习笔记 (3)
  • Python (3)
  • SpringCloud (4)
  • Web (5)
  • Web前端 (4)
  • Web后端 (5)
  • 数据库 (1)
  • 数据结构 (10)
  • 杂谈 (3)
  • 诗词歌赋 (1)
  • 逸笔挥墨 (3)
  • 随摘 (3)
最新 热点 随机
最新 热点 随机
Spring Cloud 微服务学习笔记 - 负载均衡服务调用 Spring Cloud 微服务学习笔记 - Eureka 服务注册与发现 Spring Cloud 微服务学习笔记 - IDEA工程搭建 关于我和Titan笔记 Spring Cloud 微服务学习笔记 - 开篇 TitanEMS - Titan企业员工管理系统 - JavaWeb期末实践项目
Spring Cloud 微服务学习笔记 - 开篇随摘,其一诗摘,其一关于我和Titan笔记《梦之浮桥》中的几句随摘,其二
(三) Mybatis动态SQL语句 Spring Cloud 微服务学习笔记 - IDEA工程搭建 TitanEMS - Titan企业员工管理系统 - JavaWeb期末实践项目 Titan社区,基于SSM框架开发的知识问答社区 [Python]随机生成大量的虚拟信息测试数据(姓名,手机号,ID,家庭住址等) [数据结构] 二叉树的前序遍历、中序遍历和后序遍历
标签聚合
链式存储 Python Mybatis学习笔记 JavaWeb 二叉树 Java Apache-Hive 数据结构
友情链接
  • Mttblog

COPYRIGHT © 2016 - 2021 Titan笔记. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

豫ICP备20001822号-1

豫公网安备 41010502004418号