前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(二) 使用Mybatis完成CRUD操作 - Titan的Mybatis系列学习笔记

(二) 使用Mybatis完成CRUD操作 - Titan的Mybatis系列学习笔记

作者头像
泰坦HW
发布2020-07-22 16:14:12
3100
发布2020-07-22 16:14:12
举报
文章被收录于专栏:Titan笔记Titan笔记

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是无法模糊查询所有信息的。当然也可以在配置文件中进行处理,这里不具体介绍。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020年05月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Mybatis 学习笔记
  • 使用Mybatis完成CRUD操作
    • 1. 插入数据操作
      • 2. 更新数据的操作
        • 3. 删除数据的操作
          • 4. 根据条件查询数据
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档