栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis系列全解(三):Mybatis简单CRUD使用介绍

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis系列全解(三):Mybatis简单CRUD使用介绍

封面:洛小汐
作者:潘潘

在理解中执行,在执行中理解,学习技术也循此道。

前言

上一篇文章 《Mybatis系列全解(二):Mybatis简介与环境搭建》 ,我们对 Mybatis 做了初步讲解,并搭建了一套基本环境,共同完成了一次查询操作。所以本篇文章我们在此基础上,继续拓展了插入、修改、删除三种操作,把我们的CRUD基础操作进行完善。


Mybaits系列全解 (持续更新)
  • Mybatis系列全解(一):手写一套持久层框架
  • Mybatis系列全解(二):Mybatis简介与环境搭建
  • Mybatis系列全解(三):Mybatis简单CRUD使用介绍
  • Mybatis系列全解(四):全网最全!Mybatis配置文件XML全貌详解
  • Mybatis系列全解(五):全网最全!详解Mybatis的Mapper映射文件
  • Mybatis系列全解(六):Mybatis最硬核的API你知道几个?
  • Mybatis系列全解(七):全息视角看Dao层两种实现方式之传统方式与代理方式
  • Mybatis系列全解(八):Mybatis的动态SQL
  • Mybatis系列全解(九):Mybatis的复杂映射
  • Mybatis系列全解(十):Mybatis注解开发
  • Mybatis系列全解(十一):Mybatis缓存全解
  • Mybatis系列全解(十二):Mybatis插件开发
  • Mybatis系列全解(十三):Mybatis代码生成器
  • Mybatis系列全解(十四):Spring集成Mybatis
  • Mybatis系列全解(十五):SpringBoot集成Mybatis
  • Mybatis系列全解(十六):Mybatis源码剖析

目录

1、Mybatis查询操作回顾

2、插入操作

3、修改操作

4、删除操作

5、总结

Mybatis查询操作回顾

默认已安装 Java 开发环境、Mysql数据库、Maven 环境。

Mybatis 的查询分为7个步骤:

1、创建 maven 工程

2、添加 MyBatis 仓库坐标(非maven项目则引入jar包)

3、创建user数据表

4、编写User实体类

5、编写映射文件UserMapper.xml

6、编写核心文件SqlMapConfig.xml

7、编写测试类

1、创建 maven 工程

2、添加 MyBatis 仓库坐标


    
 UTF-8
 UTF-8
 1.8
 1.8
 1.8
    

    

 
 
     org.mybatis
     mybatis
     3.4.5
 

 
 
     mysql
     mysql-connector-java
     5.1.6
     runtime
 

 
 
     junit
     junit
     4.12
     test
 

 
 
     log4j
     log4j
     1.2.12
 

    

3、创建user数据表


CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) DEFAULT NULL,
  `password` varchar(50) DEFAULT NULL,
  `birthday` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

4、编写User实体类


package com.panshenlian.pojo;


public class User {
    private int id;
    private String username;
    private String password;
    private String birthday;

    public int getId() {
 return id;
    }

    public void setId(int id) {
 this.id = id;
    }

    public String getUsername() {
 return username;
    }

    public void setUsername(String username) {
 this.username = username;
    }

    public String getPassword() {
 return password;
    }

    public void setPassword(String password) {
 this.password = password;
    }

    public String getBirthday() {
 return birthday;
    }

    public void setBirthday(String birthday) {
 this.birthday = birthday;
    }

    @Override
    public String toString() {
 return "User{" +
  "id=" + id +
  ", username='" + username + ''' +
  ", password='" + password + ''' +
  ", birthday='" + birthday + ''' +
  '}';
    }
}

5、编写映射文件UserMapper.xml






    
 select * from User
    



6、编写核心文件SqlMapConfig.xml





    
 
     
     
  
  
  
  
     
 
    
    
 
    


7、编写测试类


package com.panshenlian.service;

import com.panshenlian.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;


public class MybatisTest {

    @Test
    public void testQueryUser01() throws IOException {

 //加载核心配置文件
 InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");

 // 获得sqlSession工厂对象
 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);

 //获得sqlSession对象
 SqlSession sqlSession = sqlSessionFactory.openSession();

 // 执行sql语句
 List userList = sqlSession.selectList("userMapper.findAll");

 // 打印结果
 for (User user : userList) {
     System.out.println(user);
 }

 // 释放资源
 sqlSession.close();
    }


}


最终通过 Junit 单元测试,运行结果符合预期

工程结构参考

插入操作

Mybatis的插入数据操作,我们一共需要两步:

  1. 在映射文件UserMapper.xml中添加插入语句

    
    
 
 insert into user(username,password,birthday) 
 values ( #{username}, #{password},#{birthday})
    
    

  1. 编写插入User实体对象的 Java 代码

    @Test
    public void testInsertUser01() throws IOException {

 //加载核心配置文件
 InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");

 // 获得sqlSession工厂对象
 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);

 //获得sqlSession对象
 SqlSession sqlSession = sqlSessionFactory.openSession();

 // 准备插入数据库的对象
 User insertUser = new User();
 insertUser.setBirthday("2020-12-01");
 insertUser.setUsername("panpan");
 insertUser.setPassword("888");

 // 执行sql语句
 int rows = sqlSession.insert("userMapper.insertUser",insertUser);

 // 打印结果
 System.out.println(rows);

 // 提交事务
 sqlSession.commit();

 // 释放资源
 sqlSession.close();
    }

注意:当 sqlSession 执行插入、更新、删除操作时,需要提交事务,如果 openSession() 的时候使用无参构造函数,那么需要手动调用 commit() 进行事务提交,对应的插入、更新、删除操作才最终执行成功,如果是使用 openSession(true) 来打开session ,那么则表示事务自动提交,无需手工再调用 commit() 。

插入操作时,在映射文件中我们没有配置 resultType参数,即返回结果类型我们没有配置,Mybatis 默认返回 int 类型,表示插入操作影响的记录数。

上例插入操作执行结果为:1 ,表示插入成功,影响记录数量为1条。

插入操作注意问题

1、插入语句使用 insert 标签

2、在映射文件中使用 parameterType 属性指定要插入的数据类型

3、Sql语句中使用#{实体属性名}方式引用实体中的属性值

4、插入操作使用的API是sqlSession.insert(“命名空间.id”,实体对象);

5、插入操作涉及数据库数据变化,所以要使用sqlSession对象显示的提交事务,即sqlSession.commit()

修改操作

Mybatis的修改数据操作,同插入操作,也是需要两步:

  1. 在映射文件UserMapper.xml中添加修改语句

    
    
 
 update  user set username =#{username} where id = #{id}
 
    

  1. 编写修改User实体对象的 Java 代码

    @Test
    public void testUpdateUser01() throws IOException {

 //加载核心配置文件
 InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");

 // 获得sqlSession工厂对象
 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);

 //获得sqlSession对象
 SqlSession sqlSession = sqlSessionFactory.openSession();

 User updateUser = new User();
 updateUser.setUsername("新的用户名PanPan");
 updateUser.setId(1); 

 // 执行sql语句
 int rows = sqlSession.update("userMapper.updateUser",updateUser);

 // 打印结果
 System.out.println(rows);

 // 提交事务
 sqlSession.commit();

 // 释放资源
 sqlSession.close();
    }

执行结果如下,成功修改 id =1 的数据记录,新用户名为 新的用户名PanPan

修改操作注意问题

1、修改语句使用update标签

2、修改操作使用的API是sqlSession.update(“命名空间.id”,实体对象);

删除操作

Mybatis的删除数据操作,同以上插入与修改操作,也是需要两步:

  1. 在映射文件UserMapper.xml中添加删除语句

    
    
 
 delete from  user where id=#{id} and username = #{username}
 
    

  1. 编写删除User实体对象的 Java 代码

    @Test
    public void testDeleteUser01() throws IOException {

 //加载核心配置文件
 InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");

 // 获得sqlSession工厂对象
 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);

 //获得sqlSession对象
 SqlSession sqlSession = sqlSessionFactory.openSession();

 User deleteUser = new User();
 deleteUser.setUsername("新的用户名PanPan");
 deleteUser.setId(1);

 // 执行sql语句
 int rows = sqlSession.delete("userMapper.deleteUser",deleteUser);

 // 打印结果
 System.out.println(rows);

 // 提交事务
 sqlSession.commit();

 // 释放资源
 sqlSession.close();
    }

执行结果如下,成功删除 id =1 ,username=新的用户名PanPan的数据记录。

删除操作注意问题

1、删除语句使用 delete 标签

2、Sql语句中使用#{实体属性名}引用传递的对象属性

3、删除操作使用的API是sqlSession.delete(“命名空间.id”,Object);

删除操作也可以通过执行id的方式进行删除,例如在映射文件中把参数设置为parameterType=“java.lang.Integer”,实际 API 是sqlSession.delete(“命名空间.id”,1);

总结

我们通过本文介绍,基本掌握了 Mybatis 最基础的 CRUD 操作,后续,我们逐步深入。

本篇完,本系列下一篇我们讲《 Mybatis系列全解(四):XML配置文件与API介绍 》。

BIU ~ 文章持续更新,本文会在 GitHub github.com/JavaWorld 收录,热腾腾的技术、框架、面经、解决方案,我们都会以最美的姿势第一时间送达,欢迎 Star。

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号