(五).xml配置方式动态实现数据增删查改---基于SpringBoot+MySQL+Vue+ElementUI+Mybatis前后端分离面向小白管理系统搭建

任务四 后端数据增删改查(@Mapper注解)

任务五 .xml配置方式动态实现数据增删查改

在任务四我们实现了后端数据增删改查,大家熟练使用@Mapper注解及Mybatis注解方式实现数据CRUD;并且学会使用Postman做运行测试。
本次任务我们作为拓展训练,主要给大家介绍spring boot集成mybatis时使用xml配置的方式。
通常来说,使用注解方式还是xml配置方式,没有绝对要求。对于如毕业设计之类的小型管理系统,不用考虑维护、分层等强制规范要求,写起来快,代码内嵌也很直接,注解可以是不错的选择。
当然,从学习的角度来说,肯定要熟悉xml配置方式。通常一个团队一个中长期项目来说,同一规范做法很有必要。用注解对于涉及到多表、多字段的复杂sql来说就很不方便,也很不友好,这是最重要考虑的,所以商业项目一般统一用xml。特别是有个几百上千的sql之后,xml的好处,就是sql有哪些是明明白白的,而且比较容易做统计,对于复杂sql也好控制。
通过本次任务,大家能够:
(1)掌握配置文件的使用方法;
(2)了解mybatisx插件的使用方法;
(3).xml配置方式实现数据CRUD。

一、数据更新

在任务四中,我们提到过一个问题,关于插入和更新我们用了一个save方法,通过判断id是否存在,如果id已经存在,就是更新,如果id不存在就是添加。这种逻辑存在一个很大的问题,就是,由于一些字段可以是非空,所以插入的时候没有问题,但是一旦,有些字段没有值,可是ID已经存在,这时候如果使用同样的代码就会把原来有值的数据更新成空值了。
当然我们也可以新编写一个的注解update,但这个时候的SQL语句就会比较复杂,我们就最好使用.xml配置方式动态实现数据更新。

1. 新建User.xml文件

在resource文件夹下新建mapper文件夹,然后新建User.xml.
在这里插入图片描述
User.xml 代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace指向mapper.xml所对应的Mapper接口-->
<mapper namespace="com.example.demo.mapper.UserMapper">
</mapper>

注意:必须修改namespace是自己的项目, 这里的namespace已经改好了。为了保证自己的项目不会写错,告诉大家一个小技巧:
可以到对应的UserMapper这个文件中鼠标右键单击Copy Path…,找到命名空间。并修改上面的命名空间。
在这里插入图片描述
在这里插入图片描述

2.安装mybatisx插件

安装一个mybatisx插件,方便xml文件与数据层切换。
在这里插入图片描述
安装好这个插件,在.xml文件前面 会有一个忍者小鸟的图标出现,就说明已经建立的对应关系。

3. 在User.xml文件中添加update标签

在User.xml文件中添加更新update标签。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace指向mapper.xml所对应的Mapper接口-->
<mapper namespace="com.example.demo.mapper.UserMapper">
    <update id="update">
        update sys_user
        <set><!--这里我们做这样的判断,主要是为了实现不将原有的数据置空,当然,也可以不判断,就写最基本的SQL语句-->
            <if test="username !=null ">
                username=#{username},
            </if>
            <if test="password !=null ">
                password=#{password},
            </if><!--一般情况password不能修改,修改密码我们通常再做一个单独的业务-->
            <if test="nickname !=null ">
                nickname=#{nickname},
            </if>
            <if test="email !=null ">
                email=#{email},
            </if>
            <if test="phone !=null ">
                phone=#{phone},
            </if>
            <if test="address !=null ">
                address=#{address}
            </if>
        </set>
        <where>
            id=#{id}
        </where>
    </update>
</mapper>

4. 删除Usermapper中的@update注解。

二选一,要嘛在.xml文件中添加SQL标签,要嘛在Usermapper中添加@update注解。
Usermapper代码为:可以看到update方法前没有任何注解了,而且由于有了.xml配置文件,在这个方法前面出现了忍者小鸟图标。

package com.example.demo.mapper;

import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface UserMapper {
    @Select("select * from sys_user")
    List<User> findAll();
    @Insert("insert into sys_user(username,password,email,phone,nickname,address) " +
            "VALUES(#{username},#{password},#{email},#{phone},#{nickname},#{address});")

    int insert(User user);
    int update(User user);
}

在这里插入图片描述

5.修改或者添加路由

    @PostMapping
    //这里做了一个单纯的添加的示例,使用的是UserService中的saveorupdate方法,实现添加和更新
    public Integer save(@RequestBody User user){
        return userService.saveorupdate(user);
    }

6.运行项目

使用postman作为测试接口,进行数据更新测试。

扫描二维码关注公众号,回复: 17368311 查看本文章
{
  "id":"8",
  "username":"测试88test",
  "password":"123",
  "nickname":"孙悟空"
}

此时可能会提示500错误。
在这里插入图片描述
IDEA编译提示的错误为:
在这里插入图片描述
这是因为我们没有在application.yml进行Mybatis配置,导致找到xml文件以及update接口。

7.application.yml进行Mybatis配置

server:
  port: 8084
spring:
  datasource:
    username: root
    password: root
    #url中database为对应的数据库名称
    url: jdbc:mysql://localhost:3306/qing?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2b8
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
    mapper-locations: classpath:mapper/*.xml   #扫描所有mapper文件夹

8.再次运行项目

使用postman作为测试接口,进行数据更新测试。在这里插入图片描述
数据更新成功,数据表中数据同样更新成功,
说明xml配置文件正常工作。在这里插入图片描述
使用同样的方法,可以完成数据增删改查,由于这里的项目比较简单,这里就略过,因为后面数据的CRUD,我们还会给大家介绍mybatis-plus。

任务总结

本次任务主要做了一个关于动态SQL的拓展训练,目的是希望同学们能对mybatis操作和读取数据库有更深的了解,任务四采用注解方式,任务五采用.xml文件方式。

猜你喜欢

转载自blog.csdn.net/wdyan297/article/details/128723173