一文带你快速学会SpringBoot工程下MaBatis对数据的增删改查功能!

本篇将带你快速学会在SpringBoot工程下,实现MaBatis对数据的增删改查功能。

89dae61a4eaa02d39286142958702be4.jpeg

一、环境准备

创建SpringBoot工程,数据库表 tb_user,实体类User,以及引入Mybatis相关依赖(创建springboot工程时已经引入),配置Mybatis(数据库连接信息),这些工作我们在 springboot整合 mybatis 的时候就已经完成,如果有不清楚的可以回看上一篇文章。

注意在创建工程,引入Mybatis相关依赖的时候也把 lombok勾选上。

b9e86dd8b958eb27e00aa64b5010266e.png

在做数据的增删改查前,先来查询一下数据库 db1下的 tb_user表,一共四条数据,如下。方便后面测试后进行查看验证。

d5a197a399193205620998f39d5a104c.png

二、删除

需求:根据id删除用户数据,如删除 id为4的用户数据。

1、编写SQL

定义接口方法,在 UserMapper接口下添加删除方法

// 根据id删除用户数据,参数占位符动态获取用户id
    @Delete("delete from tb_user where id = #{id}")
    public void delete(Integer id);

2、测试运行

在 springboot整合单元测试的类中,编写测试方法进行测试。

@Autowired // 自动装配注入
    private UserMapper userMapper;

    @Test
    public void testDelete(){
        userMapper.delete(4);
    }

因为使用的是 void方法,所以运行结束后,控制台没有返回数据。直接刷新或再次查询一下 tb_user表,发现成功删除 id为4的用户数据。

211147b4a4655fc1a0fbfb7bf671f5b5.png

注1:该删除方法也可以有返回值,其返回值为此次操作影响的记录数。只不过这里我们用了 void定义后无返回值。

注2:如果mapper接口方法形参只有一个普通类型的参数,#{...}里面的属性名可以随便写,如: #{id}、#{value}。

3、预编译SQL

3.1 配置日志

在application.properties中,配置mybatis的日志,并指定输出到控制台。

输入mybatislog就会有提示

#指定mybatis输出日志的位置,输出控制台
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

配置完成后再次启动测试,成功输出日志信息,即预编译SQL

bbd88fcf9d3ba48ebf0b9cf35a022157.png

3.2 预编译SQL好处

1)性能更高

9d9c4c397d9cfde1a21d0f767ac231c2.jpeg

2)更安全(防止SQL注入)

SQL注入是通过操作输入的数据来修改事先定义好的SQL语句,以达到执行代码对服务器进行攻击的方法。

关于SQL注入,之前的文章有介绍过,这里不再赘述。

三、增加

需求:往 tb_user表中插入一条用户数据。

1、编写SQL

1)首先对sql语句进行分析,由于设置了主键 id为自增,故 id不需要插入,其余字段都需要插入

insert into tb_user(username,name,age,gender) values ('Tom',汤姆,22,'男')

2)定义接口方法,在 UserMapper接口下添加新增方法

注:将多个参数封装到一个 user对象中,这样在调用 insert方法时就不用传递多个参数,而只需要传递user对象即可(该对象即为我们的实体类对象)。直接通过对象中的属性值来实现动态获取

// 新增员工
    @Insert("insert into tb_user(username,name,age,gender) values (#{username},#{name},#{age},#{gender})")
    public void insert(User user);

2、测试运行

在 springboot整合单元测试的类中,编写测试方法进行测试。

@Autowired
    private UserMapper userMapper;

    @Test
    public void testInsert(){
        // 构造用户对象
        User user = new User();
        user.setUsername("Tom");
        user.setName("汤姆");
        user.setAge((short) 22);
        user.setGender("男");
        // 执行新增用户信息操作
        userMapper.insert(user);
    }

运行后控制台输出的结果如下

e8493e605fafd4e7f3b66c16d23e4926.png

返回数据库查询 tb_user表,发现新增用户成功

e1a8c5fbb1fcc25bd81f03bac05d96ca.png

3、主键返回功能实现

3.1 背景

在数据添加成功后,需要获取插入数据库数据的主键。

如: 在点餐系统业务中,添加套餐数据时,还需要维护套餐菜品关系表数据。具体两步如下:

1.先保存套餐信息,并获取套餐ID。

2.然后再保存套餐菜品关联信息(需要记录套餐ID、菜品ID)

3.2 实现

需要在接口方法上添加如下注解

注:该注解会自动将生成的主键值,赋值给emp对象的id属性

// 新增用户
    @Options(keyProperty = "id",useGeneratedKeys = true) // 添加注解,实现主键返回
    @Insert("insert into tb_user(username,name,age,gender) values (#{username},#{name},#{age},#{gender})")
    public void insert(User user);
3.3 测试

修改测试方法里面的测试数据,重新启动运行,控制台成功输出返回的主键值。

913ec13ab1ad9890d1c93aadb626afd0.png

再返回数据库查询 tb_user表,发现多了一条新增的 id为8的用户信息。

四、修改

在实际的业务中,点击修改按钮一般都会弹出一个表单,并显示可以修改的数据,如下

a6b9ae731b38b4ccfee1392ea273ca46.png

所以修改数据,要完成如下两个需求

需求1:根据 id查询数据用于回显。

需求2:根据 id修改数据。

1、数据回显

根据id查询用户,用于修改前的回显

1.1 编写SQL

定义接口方法,在 UserMapper接口下添加查询方法

注:该方法有返回值,由于查询返回的是一条数据,所以直接将查询返回的结果封装到一个 user对象中,而不是封装到 List集合。

// 修改用户
    // 1.根据id查询用户,用于修改前的回显
    @Select("select * from tb_user where id = #{id}")
    public User getById(Integer id);
1.2 测试运行

在 springboot整合单元测试的类中,编写测试方法进行测试。

// 根据id查询用户
    @Test
    public void testGetById(){
        User user=userMapper.getById(8);
        System.out.println(user);
    }

运行后控制台输出的结果如下,成功返回 id为8的用户数据。

782c863a2049e5594db6123c2d737120.png

1.3 注意事项

1、实体类属性名和数据库表查询返回的字段名一致,mybatis会自动封装。

2、如果实体类属性名和数据库表查询返回的字段名不一致,不能自动封装。

8d1435e45ed92474ad6f538d7fe237ea.jpeg

解决方法如下:

推荐使用最后一种方式

3ed7265cfa7e36ef1c7a2da86eecc61b.jpeg

2、修改数据

经过上一步,将查询的数据回显出来后,就需要对其进行修改。

1.1 编写SQL

定义接口方法,在 UserMapper接口下添加修改方法

注:同样参考新增的方法,将多个参数封装到一个 user对象中,直接通过对象中的属性值来实现动态获取。

// 修改用户
    // 2.更新用户(根据id修改数据)
    @Update("update tb_user set username = #{username},name = #{name},age = #{age},gender = #{gender} where id= #{id}")
    public void update(User user);
1.2 测试运行

在 springboot整合单元测试的类中,编写测试方法进行测试。

// 根据id修改用户
    @Test
    public void testUpdate(){
        // 构造用户对象
        User user = new User();
        user.setUsername("Tom2");
        user.setName("汤姆2");
        user.setAge((short) 22);
        user.setGender("男");
        // 执行更新用户信息操作
        userMapper.update(user);
    }

运行后控制台输出的结果如下,说明已成功修改。

14d87d05b457f128d034781d95e92f42.png

五、查询

1、条件查询

如查询用户姓名包含"张"的男性用户(采用 like模糊匹配)

b9c9ccac58c2c019688101c8ecd6e5ff.jpeg

1.1 编写SQL

定义接口方法,在 UserMapper接口下添加新增方法

注:根据条件查询,查询的结果可能不止一条,所以要封装到一个 List集合中,集合的泛型就是我们的 user对象。

需要根据条件查询的字段,来指定方法中的形参

// 根据条件查询用户,这里采用了concat方法
    @Select("select * from tb_user where name like concat('%',#{name},'%') and gender = #{gender}")
    public List<User> list(String name,String gender);
1.2 测试运行

在 springboot整合单元测试的类中,编写测试方法进行测试。

// 根据条件查询用户
    @Test
    public void testList(){
        List<User> userList = userMapper.list("张", "男");
        System.out.println(userList);
    }

1d28a9f0ebf118f587c76235d371153a.png

1fad14ba32658b6c902803ceddf0e155.gif

喜欢就点击上方关注我们吧!

c7f0c16b11bcb51cc62fd83967fe83cf.png

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用Spring Boot,MyBatis和Vue进行增删改查操作的步骤如下: 1. 设置Spring Boot项目: - 使用Spring Initializr创建一个新的Spring Boot项目。 - 在pom.xml文件中添加所需的依赖项,包括Spring Boot、MyBatis和Vue相关的依赖项。 - 配置数据库连接信息,例如数据库URL、用户名和密码等。 2. 创建数据库表: - 使用SQL脚本或图形化工具创建数据库表,定义表结构和字段。 3. 创建实体类: - 在Spring Boot项目中创建Java实体类,代表数据库表中的每个字段。 - 使用注解(如@TableName)映射实体类和数据库表。 4. 创建Mapper接口: - 在Spring Boot项目中创建Mapper接口,用于定义数据库的增删改查操作。 - 使用MyBatis的注解(如@Select、@Insert、@Update、@Delete)映射接口方法和SQL查询。 5. 实现Mapper接口: - 在Spring Boot项目中创建Mapper接口的实现类,实现具体的数据操作逻辑。 6. 创建Vue前端页面: - 在Vue项目中创建前端页面,用于展示数据和接收用户的输入。 - 使用Vue的模板语法和组件库构建用户界面。 7. 发送HTTP请求: - 在Vue前端页面中,使用axios或其他HTTP库发送HTTP请求到Spring Boot后端服务器的API接口。 - 根据需求,发送对应的增删改查请求(如GET请求查询数据,POST请求添加数据,PUT请求更新数据,DELETE请求删除数据)。 8. 处理API请求: - 在Spring Boot项目中,处理来自Vue前端页面的API请求。 - 解析请求参数,调用对应的Mapper接口方法,进行增删改查操作。 - 将操作结果封装成JSON格式,返回给前端页面。 通过以上步骤,你可以实现使用Spring Boot、MyBatis和Vue进行增删改查操作的应用程序。这些步骤提供了一个基本的指导,你可以根据具体的需求进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农后端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值