springboot+mybatis+plus个人常用增删改查代码

TestXmlController:在mybatis的xml文件中写sql以实现增删改查

TestBaseMapperController.java:BaseMapper方式进行增删改查

TestServerImplController:通过通过ServiceImpl实现增删改查

package com.gree;


import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.gree.Entity.order.Order;
import com.gree.Entity.order.OrderForm;
import com.gree.Entity.order.OrderFormBatch;
import com.gree.Entity.order.OrderQuery;
import com.gree.mapper.OrderMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.LinkedHashMap;
import java.util.List;


/**
 * 在mybatis的xml文件中写sql以实现增删改查
 * 以下以订单表为例子,进行增删改查
 */
@RestController
@RequestMapping(path = "/order")
public class TestXmlController {


    @Autowired
    OrderMapper orderMapper;


    /**
     * 新增数据接口
     * xml方式
     */
    @PostMapping("/insertOne")
    public Object insertOne(@RequestBody OrderForm orderForm) {
        Integer num = orderMapper.insertOne(orderForm);
        return orderForm;
    }


    /**
     * 批量保存接口
     * xml方式
     */
    @PostMapping("/batchSave")
    public Object batchSave(@RequestBody OrderFormBatch form) {
        Integer num = orderMapper.batchSave(form.getItems());
        return form;
    }


    /**
     * 删除数据接口
     * xml方式
     */
    @PostMapping("/deleteOne")
    public Object deleteOne(@RequestParam(required = true) Long id) {
        Integer num = orderMapper.deleteOne(id);
        return num;
    }


    /**
     * 更新接口
     * xml方式
     * 全字段更新,如果请求的json中不包含某个字段或者某个字段为null,那么数据库中该字段的数值也会被更新为null
     */
    @GetMapping("/updatefull")
    public Object update(@RequestBody OrderForm form) {
        if (form.getOrderId() == null) {
            return "id不能为null";
        }
        Integer update = orderMapper.updateOrder(form);
        return update;
    }


    /**
     * 更新接口-
     * xml方式
     * 只更新字段值不为null的数据
     */
    @GetMapping("/updateNotNull")
    public Object updateNotNull(@RequestBody OrderForm form) {
        if (form.getOrderId() == null) {
            return "id不能为null";
        }
        Integer update = orderMapper.updateNotNull(form);
        return update;
    }


    /**
     * 只更新字段存在的数据
     * xml方式
     * 字段在请求体的json中存在则进行更新,字段在请求体的json中不存在则不更新,存在字段但是字段值为null将会把对应数据库字段赋值为null
     */
    @PostMapping("/updateExitField")
    public Object updateExitField(@RequestBody LinkedHashMap reqMap) {
        if (reqMap.get("orderId") == null) {
            return "id不能为null";
        }
        orderMapper.partUpdateOrder(reqMap);
        return reqMap;
    }


    /**
     * 批量更新接口
     * xml方式
     */
    @PostMapping("/batchUpdate")
    public Object batchUpdate(@RequestBody OrderFormBatch form) {
        long count = form.getItems().stream().filter(item -> item.getOrderId() == null).count();
        if (count > 0) {
            return "有id的值为空";
        }
        Integer update = orderMapper.updateBatch(form);
        return update;
    }


    /**
     * 分页查询
     * xml方式
     */
    @GetMapping("/pagelist")
    public Object pagelist(@RequestBody OrderQuery orderQuery) {
        PageHelper.startPage(orderQuery.getPageNum(), orderQuery.getPageSize());
        List<Order> list = orderMapper.pagelist(orderQuery);
        Page page = (Page) list;
        long total = page.getTotal();
        return page;
    }


}

package com.gree;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.gree.Entity.PageBean;
import com.gree.Entity.user.User;
import com.gree.Entity.user.UserQuery;
import com.gree.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;


/**
 * BaseMapper方式进行增删改查
 * 注意:BaseMapper方式只支持单表
 * 以下以用户表为例子,进行增删改查
 */
@RestController
@RequestMapping("/user")
public class TestBaseMapperController {

    @Autowired
    UserMapper userMapper;

    /**
     * 新增数据接口
     * BaseMapper方式
     */
    @PostMapping("/insertOne")
    public Object insertOne(@RequestBody User user) {
        int insert = userMapper.insert(user);
        return user;
    }


    /**
     * 删除数据接口
     * BaseMapper方式
     */
    @PostMapping("/delete")
    public Object delete(@RequestParam(name = "id") String id) {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("id", id);
        int delete = userMapper.delete(queryWrapper);
        return delete;
    }


    /**
     * 更新数据接口
     * 如果字段为null则不更新
     * BaseMapper方式
     */
    @PostMapping("/update")
    public Object update(@RequestBody User user) {
        UpdateWrapper<User> wrapper = new UpdateWrapper<>();
        wrapper.eq("id", user.getId());
        int num = userMapper.update(user, wrapper);
        return num;
    }


    /**
     * 查询数据接口
     * BaseMapper方式
     */
    @PostMapping("/select")
    public Object select(@RequestBody UserQuery userQuery) {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        if (userQuery.getId() != null) {
            queryWrapper.eq("id", userQuery.getId());
        }
        if (userQuery.getAge() != null) {
            queryWrapper.eq("age", userQuery.getAge());//如果字段为null,则最终sql会拼接成 = null
        }
        if (userQuery.getBirthday() != null) {
            queryWrapper.eq("birthday", userQuery.getBirthday());
        }
        PageHelper.startPage(userQuery.getPageNum(), userQuery.getPageSize());
        List<User> users = userMapper.selectList(queryWrapper);
        Page<User> page = (Page) users;
        long total = page.getTotal();
        PageBean<User> pageBean = new PageBean(page);
        return pageBean;
    }


}

package com.gree;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.github.pagehelper.PageHelper;
import com.gree.Entity.student.Student;
import com.gree.server.TestIBaseServiceServer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;


/**
 * 通过通过ServiceImpl实现增删改查
 * ServiceImpl底层部分实现基于BaseMapper实现,因此也只适合单表操作
 * 下面以学生表为例写增删改查代码
 */
@RestController
@RequestMapping("/student")
public class TestServerImplController {

    @Autowired
    TestIBaseServiceServer server;


    /**
     * 新增数据接口
     * 通过ServiceImpl实现
     */
    @PostMapping("/save")
    public Object insertOne(@RequestBody Student student) {
        server.save(student);
        return student;
    }


    /**
     * 删除数据接口
     * 通过ServiceImpl实现
     * 如果id传入为null,则最后sql为DELETE FROM student WHERE (id = null)
     */
    @PostMapping("/delect")
    public Object delect(@RequestBody Student student) {
        UpdateWrapper<Student> wrapper = new UpdateWrapper<>();
        wrapper.eq("id", student.getId());
        boolean update = server.remove(wrapper);
        return update;
    }


    /**
     * 更新数据接口
     * 通过ServiceImpl实现
     * 只更新不为null的字段,如果字段为null则不更新
     */
    @PostMapping("/update")
    public Object update(@RequestBody Student student) {
        UpdateWrapper<Student> wrapper = new UpdateWrapper<>();
        wrapper.eq("id", student.getId());
        boolean update = server.update(student, wrapper);
        return update;
    }


    /**
     * 查询数据接口
     * 通过ServiceImpl实现
     */
    @PostMapping("/select")
    public Object select(
            @RequestParam Integer pageNum,
            @RequestParam Integer pageSize,
            @RequestBody Student student
    ) {
        QueryWrapper<Student> queryWrapper = new QueryWrapper<>();
        if (student.getId() != null) {
            queryWrapper.eq("id", student.getId());
        }
        if (student.getAge() != null) {
            queryWrapper.eq("age", student.getAge());//如果字段为null,则最终sql会拼接成 = null,将查不出任何数据
        }
        PageHelper.startPage(pageNum, pageSize);
        List<Student> list = server.list(queryWrapper);
        return list;
    }


    /**
     * 批量更新
     * 通过ServiceImpl实现
     * ServiceImpl还有批量保存,批量保存或更新的方法
     * 为null的字段不回更新
     */
    @PostMapping("/updateBatchById")
    public Object updateBatchById(@RequestBody List<Student> arr) {
        server.updateBatchById(arr);
        return arr;
    }


}

package com.gree.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gree.Entity.user.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper extends BaseMapper<User> {

}

package com.gree.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gree.Entity.student.Student;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface StudentMapper extends BaseMapper<Student> {

}

package com.gree.mapper;

import com.gree.Entity.order.Order;
import com.gree.Entity.order.OrderForm;
import com.gree.Entity.order.OrderFormBatch;
import com.gree.Entity.order.OrderQuery;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;


@Mapper
public interface OrderMapper {

    List<Order> pagelist(@Param("orderQuery") OrderQuery orderQuery);

    Integer updateOrder(@Param("form") OrderForm form);

    Integer updateNotNull(@Param("mapOfParam") OrderForm form);

    Integer partUpdateOrder(@Param("mapOfParam") Map orderQuery);

    Integer insertOne(OrderForm orderForm);

    Integer deleteOne(@Param("id") Long id);

    Integer updateBatch(@Param("form") OrderFormBatch form);

    Integer batchSave(@Param("items") List<OrderForm> items);
}

package com.gree.server;

import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gree.Entity.student.Student;
import com.gree.mapper.StudentMapper;
import org.springframework.stereotype.Service;

@Service
public class TestIBaseServiceServer extends ServiceImpl<StudentMapper, Student> {

}

OrderMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gree.mapper.OrderMapper">


    <select id="pagelist" resultType="com.gree.Entity.order.Order">
        select * from t_order
        <where>
            <if test="orderQuery.userId != null ">
                and user_id =#{orderQuery.userId}
            </if>
            <if test="orderQuery.userCode != null and orderQuery.userCode!=''">
                AND user_id like CONCAT('%',#{orderQuery.userCode},'%')
            </if>
            <if test="orderQuery.userIdList != null and orderQuery.userIdList.size > 0 ">
                and user_id in
                <foreach collection="orderQuery.userIdList" index="index" open="(" close=")" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
        </where>
    </select>


    <update id="updateOrder">
        update t_order
        <set>
            price = #{form.price},
            user_id = #{form.userId}
        </set>
        where order_Id = #{form.orderId}
    </update>


    <update id="updateNotNull">
        update t_order
        <set>
            <if test="mapOfParam.userId != null ">
                user_id = #{mapOfParam.userId},
            </if>
            <if test="mapOfParam.price != null ">
                price = #{mapOfParam.price},
            </if>
        </set>
        where order_Id = #{mapOfParam.orderId}
    </update>


    <update id="partUpdateOrder">
        update t_order
        <set>
            <if test="mapOfParam.containsKey('userId')">
                user_id = #{mapOfParam.userId},
            </if>
            <if test="mapOfParam.containsKey('price')">
                price = #{mapOfParam.price},
            </if>
        </set>
        where order_Id = #{mapOfParam.orderId}
    </update>



    <update id="updateBatch">
        UPDATE t_order
        SET user_id = (
        CASE order_Id
        <foreach collection="form.items" index="index" item="item" separator=" ">
            WHEN #{item.orderId} THEN #{item.userId}
        </foreach>
        END
        ),
        price = (
        CASE order_Id
        <foreach collection="form.items" index="index" item="item" separator=" ">
            WHEN #{item.orderId} THEN #{item.price}
        </foreach>
        END
        )
        WHERE
        order_Id IN (
        <foreach collection="form.items" index="index" item="item" separator=",">
            #{item.orderId}
        </foreach>
        )
    </update>


    <insert id="insertOne">
        INSERT INTO `t_order`(`order_id`, `price`, `user_id`, `status`)
        VALUES
        (#{form.orderId}, #{form.price},#{form.userId}, #{form.status});
    </insert>


    <insert id="batchSave" useGeneratedKeys="true" keyProperty="orderId">
        INSERT INTO `t_order`( `price`, `user_id`)
        VALUES
        <foreach collection="items" index="index" item="item" separator=",">
            ( #{item.price},#{item.userId})
        </foreach>
    </insert>


    <delete id="deleteOne">
        DELETE FROM `m0`.`t_order` WHERE `order_id` = #{id}
    </delete>


</mapper>

application.yml

server:
  port: 8752

spring:
  application:
    name: springcloudclientTest
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/m0?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 1234

logging:
  level:
    com.gree.mapper: trace









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是基于Spring BootMyBatis Plus框架搭建的MySQL前后端增删改查的完整示例代码: 1. 在pom.xml文件中添加相关依赖: ```xml <dependencies> <!-- Spring Boot Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- MyBatis Plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.0</version> </dependency> <!-- MySQL Connector --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> <!-- Lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.20</version> <scope>provided</scope> </dependency> </dependencies> ``` 2. 创建数据库表和相关实体类 ```sql CREATE DATABASE IF NOT EXISTS `test`; USE `test`; CREATE TABLE IF NOT EXISTS `user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `name` varchar(30) NOT NULL COMMENT '姓名', `age` int(3) NOT NULL COMMENT '年龄', `email` varchar(50) NOT NULL COMMENT '邮箱', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户表'; INSERT INTO `user` (`name`, `age`, `email`) VALUES ('Tom', 18, 'tom@example.com'); INSERT INTO `user` (`name`, `age`, `email`) VALUES ('Jerry', 20, 'jerry@example.com'); ``` 创建实体类User.java: ```java @Data @TableName(value = "user") public class User { @TableId(value = "id", type = IdType.AUTO) private Integer id; private String name; private Integer age; private String email; } ``` 3. 创建Mapper接口和对应的Mapper.xml文件 创建UserMapper.java: ```java @Mapper public interface UserMapper extends BaseMapper<User> { } ``` 创建userMapper.xml: ```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" > <mapper namespace="com.example.demo.mapper.UserMapper"> <resultMap id="BaseResultMap" type="com.example.demo.entity.User"> <id column="id" property="id"/> <result column="name" property="name"/> <result column="age" property="age"/> <result column="email" property="email"/> </resultMap> <sql id="Base_Column_List"> id, name, age, email </sql> <select id="selectById" resultMap="BaseResultMap"> select <include refid="Base_Column_List"/> from user where id = #{id} </select> <select id="selectAll" resultMap="BaseResultMap"> select <include refid="Base_Column_List"/> from user </select> <insert id="insert" parameterType="com.example.demo.entity.User"> insert into user(name, age, email) values(#{name}, #{age}, #{email}) </insert> <update id="updateById" parameterType="com.example.demo.entity.User"> update user set name = #{name}, age = #{age}, email = #{email} where id = #{id} </update> <delete id="deleteById" parameterType="java.lang.Integer"> delete from user where id = #{id} </delete> </mapper> ``` 4. 创建Service接口和实现类 创建UserService.java: ```java public interface UserService { User selectById(int id); List<User> selectAll(); boolean insert(User user); boolean updateById(User user); boolean deleteById(int id); } ``` 创建UserServiceImpl.java: ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public User selectById(int id) { return userMapper.selectById(id); } @Override public List<User> selectAll() { return userMapper.selectList(null); } @Override public boolean insert(User user) { return userMapper.insert(user) > 0; } @Override public boolean updateById(User user) { return userMapper.updateById(user) > 0; } @Override public boolean deleteById(int id) { return userMapper.deleteById(id) > 0; } } ``` 5. 创建Controller类和接口 创建UserController.java: ```java @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @GetMapping("/select") public User selectById(@RequestParam("id") Integer id) { return userService.selectById(id); } @GetMapping("/list") public List<User> selectAll() { return userService.selectAll(); } @PostMapping("/insert") public boolean insert(User user) { return userService.insert(user); } @PostMapping("/update") public boolean updateById(User user) { return userService.updateById(user); } @PostMapping("/delete") public boolean deleteById(@RequestParam("id") Integer id) { return userService.deleteById(id); } } ``` 至此,一个基于Spring BootMyBatis Plus框架的MySQL前后端增删改查的完整示例代码就完成了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值