IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Mybatis plus无介绍快使用,自定义sql语句CRUD增删改查附源码(二) -> 正文阅读

[大数据]Mybatis plus无介绍快使用,自定义sql语句CRUD增删改查附源码(二)

问题背景

因为mybatis plus非常的流行,虽然平常mybatis generator也够用了,但多会一个,看别人的代码就轻松一点
注意事项:

Mybatis-plus无介绍快使用,CRUD增删改查基本使用附源码(一)

Mybatis-plus无介绍快使用,自定义sql语句CRUD增删改查附源码(二)

Mybatis-plus无介绍快使用,自带封装service层的使用附源码(三)

Mybatis-plus无介绍快使用,注解的使用(四)

Mybatis-plus无介绍快使用,Wrapper条件构造器的使用附源码(五)

Mybatis-plus无介绍快使用,分页插件和乐观锁插件的使用附源码(六)

Mybatis-plus无介绍快使用,枚举变量的使用附源码(七)

Mybatis-plus无介绍快使用,多数据源的使用(八)

Mybatis-plus无介绍快使用,MybatisX自动生成代码插件的使用(九)

Mybatis-plus无介绍快使用,可继承通用的基础实体类(十)

项目搭建

1 很久上篇的CRUD基础,这个篇章讲解自定义CRUD,现在resources文件夹下创建mapper文件夹

2 添加application.yml的mapper的xml扫描路径

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://10.10.195.193:3306/fusion?severTimezone=Asia/Shanghai&allowMultiQueries=true&autoReconnect=true&characterEncoding=UTF-8&useUnicode=true&useSSL=false
    username: fusion
    password: iEx8c

#生成sql日志打印,一般关闭
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  #classpath*就是路径resources
  mapper-locations: classpath*:/mapper/**/*.xml

3 ctrl+alt+s打开setting,创建mapper模板

<?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="">


</mapper>

4 在mapper文件夹下创建UserMapper.xml文件,名字必须和UserMapper的接口名一致


5 编写自定义sql语句, resultType返回结果类型

<?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.yg.mybatisplus.mapper.UserMapper">
    <!--selectUserById-->
    <select id="selectUserById" resultType="com.yg.mybatisplus.entity.User">
        select id, name, age, email
        from user
        where id = #{id}
    </select>
    <!--selectMapById-->
    <select id="selectMapById" resultType="map">
        select id, name, age, email
        from user
        where id = #{id}
    </select>

</mapper>

6 UserMapper接口编写

package com.yg.mybatisplus.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yg.mybatisplus.entity.User;
import org.springframework.stereotype.Repository;

import java.util.Map;

/**
 * @Author suolong
 * @Date 2022/6/2 17:25
 * @Version 2.0
 */
@Repository
public interface UserMapper extends BaseMapper<User> {

    /**
     * @Caption 根据id查询用户信息为map集合
     * @Param id
     * @Return map<字段名, 值>
     */
    Map<String, Object> selectMapById(Long id);

    /**
     * @Caption 根据id查询用户信息
     * @Param id
     * @Return User
     */
    User selectUserById(Long id);

}

7 测试程序

package com.yg.mybatisplus;

import com.yg.mybatisplus.entity.User;
import com.yg.mybatisplus.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Author suolong
 * @Date 2022/6/2 17:42
 * @Version 2.0
 */

@SpringBootTest
public class MybatisPlusTest {

    @Autowired
    UserMapper userMapper;


    @Test
    void selectTest(){
        //全查
        List<User> users = userMapper.selectList(null);
        users.forEach(System.out::println);
    }

    /**
     * 测试插入一条数据
     * MyBatis-Plus在实现插入数据时,会默认基于雪花算法的策略生成id
     */
    @Test
    public void testInsert(){
        User user = new User();
        user.setName("Vz1");
        user.setAge(211);
        user.setEmail("vz@oz61.cn");
        int result = userMapper.insert(user);
        System.out.println(result > 0 ? "添加成功!" : "添加失败!");
        System.out.println("受影响的行数为:" + result);
        //1527206783590903810(当前 id 为雪花算法自动生成的id)
        System.out.println("id自动获取" + user.getId());
    }

    /**
     * 测试根据id删除一条数据
     */
    @Test
    public void testDeleteById(){
        int result = userMapper.deleteById(1533011356262625282L);
        System.out.println(result > 0 ? "删除成功!" : "删除失败!");
        System.out.println("受影响的行数为:" + result);
    }

    /**
     * 测试通过id批量删除数据
     */
    @Test
    public void testDeleteBatchIds(){
        List<Long> ids = Arrays.asList(1532349895093833729L,1533012537454157826L,1533012657583161345L);
        int result = userMapper.deleteBatchIds(ids);
        System.out.println(result > 0 ? "删除成功!" : "删除失败!");
        System.out.println("受影响的行数为:" + result);
    }

    /**
     * 测试根据Map集合中所设置的条件删除数据
     */
    @Test
    public void testDeleteByMap(){
        //当前演示为根据name和age删除数据
        //执行SQL为:DELETE FROM user WHERE name = ? AND age = ?
        Map<String,Object> map = new HashMap<>();
        map.put("name","Vz1 ");
        map.put("age",211);
        int result = userMapper.deleteByMap(map);
        System.out.println(result > 0 ? "删除成功!" : "删除失败!");
        System.out.println("受影响的行数为:" + result);
    }

    /**
     * 测试根据id修改用户信息, 只修改改变的值, 其他信息保持原值
     */
    @Test
    public void testUpdateById(){
        //执行SQL为: UPDATE user SET name=?, age=?, email=? WHERE id=?
        User user = new User();
        user.setId(5L);
        user.setEmail("Vz@sina.com");
        int result = userMapper.updateById(user);
        System.out.println(result > 0 ? "修改成功!" : "修改失败!");
        System.out.println("受影响的行数为:" + result);
    }

    /**
     * 测试根据id查询用户数据
     */
    @Test
    public void testSelectById(){
        User user = userMapper.selectById(1L);
        System.out.println(user);
    }

    /**
     * 根据多个id查询用户数据
     */
    @Test
    public void testSelectBatchIds(){
        //执行SQL为:SELECT id,name,age,email FROM user WHERE id IN ( ? , ? , ? )
        List<Long> ids = Arrays.asList(1L,2L,3L);
        List<User> users = userMapper.selectBatchIds(ids);
        users.forEach(System.out::println);
    }

    /**
     * 根据Map所设置的条件查询用户
     */
    @Test
    public void testSelectByMap(){
        //执行SQL为:SELECT id,name,age,email FROM user WHERE age = ?
        Map<String,Object> map = new HashMap<>();
        map.put("age",18);
        List<User> users = userMapper.selectByMap(map);
        users.forEach(System.out::println);
    }


    /**
     * 测试根据id查询用户数据, 返回User对象
     */
    @Test
    public void testSelectUserById(){
        User user = userMapper.selectUserById(1L);
        System.out.println(user);
    }


    /**
     * 测试根据id查询用户数据,返回map
     */
    @Test
    public void testSelectMapById(){
        Map<String, Object> stringObjectMap = userMapper.selectMapById(1L);
        System.out.println(stringObjectMap);
    }

}

8 项目目录

总结

  • 需要自定的增删改查的语句,可以通过写xml配置文件




作为程序员第 150 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha …

Lyric: 灰狼啃食着水鹿的骨头

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-08 19:06:49  更:2022-06-08 19:08:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 21:06:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码