专栏首页村雨遥MyBatis 实现数据的增删改查

MyBatis 实现数据的增删改查

1. 查询操作 select

1.1 根据各属性来查询用户

  1. UserDao 中添加对应方法:
/**
* @param name 用户名
* @return 对应用户名的用户对象
* @description 根据用户名获取用户
* @date 2020/7/14 14:52
* @author cunyu1943
* @version 1.0
*/
User getUserByName(String name);

/**
* @param password 密码
* @return 对应密码的用户对象
* @description 根据用户密码获取用户对象
* @date 2020/7/14 14:57
* @author cunyu1943
* @version 1.0
*/
User getUserByPassword(String password);
  1. 接着在 UserMapper.xml 中添加 Select 语句。其中各属性含义如下:
  • id:对应接口中的 方法名
  • resultType:SQL 语句执行的返回值;
  • parameterType:参数类型;
<select id="getUserById" resultType="com.cunyu.pojo.User">
    select * from user where id=#{id}
</select>

<select id="getUserByName" resultType="com.cunyu.pojo.User">
    select * from user where name=#{name}
</select>

<select id="getUserByPassword" resultType="com.cunyu.pojo.User">
    select * from user where password=#{password}
</select>
  1. 在测试类中测试即可;
@Test
public void testGetUserById() {
    // 执行 SQL 语句
    UserDao mapper = sqlSession.getMapper(UserDao.class);
    User user = mapper.getUserById(2);
    System.out.println(user);

    // 关闭 SqlSession
    sqlSession.close();
}

@Test
public void testGetUserByName() {
    UserDao mapper = sqlSession.getMapper(UserDao.class);
    User user = mapper.getUserByName("村雨遥");
    System.out.println(user);

    sqlSession.close();
}

@Test
public void testGetUserByPassword(){
    UserDao mapper = sqlSession.getMapper(UserDao.class);
    User user=mapper.getUserByPassword("123456");
    System.out.println(user);

    sqlSession.close();
}

2. 插入操作 insert

  1. 首先在 UserDao 接口中添加对应方法
    /**
    * @description 添加用户
    * @param  user 待添加的用户对象
    * @return
    * @date 2020/7/14 15:50
    * @author cunyu1943
    * @version 1.0
    */
    int addUser(User user);
  1. UserMapper.xml 中添加 Insert 语句;
<insert id="addUser" parameterType="com.cunyu.pojo.User">
    insert into user(id, name, password) values (#{id},#{name},#{password})
</insert>
  1. 测试方法中测试;
@Test
public void testAddUser() {
    UserDao mapper = sqlSession.getMapper(UserDao.class);
    User user = new User(5, "小雨", "6543210");
    int i = mapper.addUser(user);
    System.out.println(i);
    // 提交事务到数据库
    sqlSession.commit();
    System.out.println("添加用户成功");
    sqlSession.close();
}

3. 修改操作 update

  1. UserDao 添加对应接口;
/**
    * @description 根据 id 修改用户
    * @param  user 待修改的用户对象
    * @return
    * @date 2020/7/14 16:04
    * @author cunyu1943
    * @version 1.0
    */
int updateUser(User user);
  1. UserMapper.xml 中添加 update 语句;
<update id="updateUser" parameterType="com.cunyu.pojo.User">
    update user set name=#{name},password=#{password} where id=#{id}
</update>
  1. 测试类中测试;
@Test
public void testUpdateUser(){
    // 获取 SqlSession 对象
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserDao mapper = sqlSession.getMapper(UserDao.class);
    User user = mapper.getUserById(1);
    user.setPassword("7891011");
    int i = mapper.updateUser(user);
    sqlSession.commit();
    System.out.println("更新数据成功");
    sqlSession.close();
}

4. 删除操作 delete

  1. userDao 中添加接口;
/**
    * @description 删除用户
    * @param  user 待删除的用户
    * @return
    * @date 2020/7/14 16:21
    * @author cunyu1943
    * @version 1.0
    */
int deleteUserById(User user);
  1. UserMapper.xml 中添加 delete 语句;
<delete id="deleteUserById" parameterType="com.cunyu.pojo.User">
    delete from user where id=#{id}
</delete>
  1. 在测试类中测试;
@Test
public void testDeleteUser(){
    // 获取 SqlSession 对象
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserDao mapper = sqlSession.getMapper(UserDao.class);
    User user = mapper.getUserById(5);
    int i = mapper.deleteUserById(user);
    sqlSession.commit();
    System.out.println("删除数据成功");
    sqlSession.close();
}

本文分享自微信公众号 - 村雨遥(cunyu1943),作者:村雨遥

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 初识数据库

    将数据看做一个二维表格,数据可以通过行号+列号唯一确定,其数据结构类似 Excel 表;

    村雨遥
  • 167. 两数之和 II - 输入有序数组

    函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。

    村雨遥
  • 用注解实现 MyBatis 开发

    之前的实例中,利用 MyBatis 进行开发时,一旦添加新的方法,则每次都需要在 XML 配置文件中进行映射。而现在随着注解开发的大肆流行,MyBatis 3 ...

    村雨遥
  • java进阶|MyBatis系列文章(一)基础性文章的思考增删改查

    本篇文章主要是使用statetment最原生的方式操作数据库以及基于xml方式操作数据库,为什么自己又去写xml方式操作数据了呢,写了几篇示例程序觉得还是xml...

    码农王同学
  • .NET 云原生架构师训练营(模块二 基础巩固 RabbitMQ 业务场景详解)--学习笔记

    用户的请求,服务器接收后,首先写入消息队列。假如消息队列的长度超过最大数量,则直接抛弃用户请求或跳转到错误页面

    郑子铭
  • .NET 云原生架构师训练营(模块二 基础巩固 RabbitMQ 业务场景详解)--学习笔记

    用户的请求,服务器接收后,首先写入消息队列。假如消息队列的长度超过最大数量,则直接抛弃用户请求或跳转到错误页面

    郑子铭
  • JavaWeb——MyBatis框架之对数据库的增删改查操作CRUD实践及MyBatis参数的深入详解

    本博文总结下使用MyBatis的CRUD操作及参数的深入,关于MyBatis的环境搭建就不再赘述了,可以回顾下以前的博文,本次也是在这个工厂的基础上进行的。

    Winter_world
  • 58同城 | Embedding技术在房产推荐中的应用

    导读:在深度学习的应用过程中,Embedding 这样一种将离散变量转变为连续向量的方式为神经网络在各方面的应用带来了极大的扩展,有"万物皆可 Embeddin...

    week
  • django使用F方法更新一个对象多个对象字段的实现

    通常情况下我们在更新数据时需要先从数据库里将原数据取出后放在内存里,然后编辑某些字段或属性,最后提交更新数据库。使用F方法则可以帮助我们避免将所有数据先载入内存...

    砸漏
  • 主动选择与方法论

    人分为两种,一种是固守型的,一种是进取型的。这两种人的主要区别在于,他们做事的时候,关注的焦点不一样:

    张张

扫码关注云+社区

领取腾讯云代金券