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中的CURD(含部分注解) -> 正文阅读

[大数据]MyBatis-Plus中的CURD(含部分注解)

测试类

@RunWith(SpringRunner.class)
@SpringBootTest
public class TestMyBatisSpringBoot {
    @Autowired
    private UserMapper userMapper;
}

插入操作

  • 测试类
  • 也可以使用有参构造
    @Test
    public void testInsert(){
        User user = new User();
        user.setAge(30);
        user.setMail("@qq.com");
        user.setUserName("ssc");
        user.setName("曹操");
        user.setPassword("123456");
        int count = this.userMapper.insert(user);
        System.out.println(count);
    }

注解

TableId 主键id的属性

@TableId(type = IdType.AUTO)
private Long id
  • IdType的五种类型默认是NONE
public enum IdType {
    AUTO(0),
    NONE(1),
    INPUT(2),
    ID_WORKER(3),
    UUID(4),
    ID_WORKER_STR(5);

    private final int key;

    private IdType(int key) {
        this.key = key;
    }

    public int getKey() {
        return this.key;
    }
}

TableField

指定数据库字段名

  • 指定数据库中的字段名,mail在数据库中没有对应的字段,可以用TableField(value = "email")指定
@TableField(value = "email")
private String mail;

表中不存在的字段

@TableField(exist = false)
private String address;

不查询某个字段

@TableField(select = false)
private String password;

更新操作

根据id更新

    @Test
    public void testUpdateById(){
        User user = new User();
        user.setId(1L);
        user.setAge(19);
        int i = this.userMapper.updateById(user);
        System.out.println("受影响条数:"+ i);
    }

根据条件更新

  • 使用实体类 QueryWrapper
@Test
public void testUpdateByCondition(){
    User user = new User();
    user.setAge(20);
    user.setPassword("888888");
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    wrapper.eq("user_name","zhangsan"); // 匹配user_name = "zhangsan" 的条件
    int i = this.userMapper.update(user, wrapper);
    System.out.println("受影响条数:"+ i);
}
  • 不用实体类 UpdateWrapper
    @Test
    public void testUpdateByCondition1(){
        UpdateWrapper<User> wrapper = new UpdateWrapper<>();
        wrapper.set("age", 21).set("password","999999") // 更新的字段
                .eq("user_name","zhangsan"); // 更新的条件
        int i = this.userMapper.update(null, wrapper);
        System.out.println("受影响条数:"+ i);
    }

删除操作

根据id删除

    @Test
    public void testDeleteById(){
        int i = this.userMapper.deleteById(8);
        System.out.println("受影响条数:"+ i);
    }

根据columnMap条件,删除

    @Test
    public void testDeleteByMap(){
        Map<String ,Object> map = new HashMap<>();
        map.put("user_name","ssc");
        map.put("password","123456");
        int i = this.userMapper.deleteByMap(map);
        System.out.println("受影响条数:"+ i);
    }

根据entity条件,删除

  • 用法一
@Test
public void testDeleteByWrapper(){
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    wrapper.eq("user_name","ssc").eq("password","123456");
    int i = this.userMapper.delete(wrapper);
    System.out.println("受影响条数:"+ i);
}
  • 用法二
    @Test
    public void testDeleteByWrapper(){
        User user = new User();
        user.setUserName("ssc1");
        user.setPassword("123456");
        QueryWrapper<User> wrapper = new QueryWrapper<>(user); // wraper根据user来包装自己的的参数
        int i = this.userMapper.delete(wrapper);
        System.out.println("受影响条数:"+ i);
    }

根据id,批量删除

    @Test
    public void testDeleteBatchId(){
        int i = this.userMapper.deleteBatchIds(Arrays.asList(8L,9L));
        System.out.println("受影响条数:"+ i);
    }
DELETE FROM tb_user WHERE id IN ( ? , ? )

查询操作

id查询

    @Test
    public void testSelectById(){
        User user = this.userMapper.selectById(1);
        System.out.println(user);
    }

查询全部

@Test
public void testFindAll(){
    List<User> users = this.userMapper.selectList(null);
    users.forEach(user -> System.out.println(user));
}

id批量查询

@Test
public void testSelectBatchId(){
    List<User> users = this.userMapper.selectBatchIds(Arrays.asList(1L, 2L));
    users.forEach(user -> System.out.println(user));
}

entity查询一条记录

  • 查询数据超过一条时会抛出异常

  • 用法一
    @Test
    public void testSelectByWrapper(){
        User user = new User();
        user.setUserName("zhangsan");
        user.setPassword("999999");
        QueryWrapper<User> wrapper = new QueryWrapper<>(user); // wraper根据user来包装自己的的参数
        User user1 = this.userMapper.selectOne(wrapper);
        System.out.println(user1);
    }
  • 用法二
    @Test
    public void testSelectByWrapper(){
        QueryWrapper<User> wrapper = new QueryWrapper<>(); // wraper根据user来包装自己的的参数
        wrapper.eq("user_name","zhangsan").eq("password","999999");
        User user1 = this.userMapper.selectOne(wrapper);
        System.out.println(user1);
    }
SELECT id,user_name,name,age,email AS mail FROM tb_user WHERE user_name = ? AND password = ? 

根据wrapper条件,查询总记录条数

    @Test
    public void testSelectCount(){
        QueryWrapper<User> wrapper = new QueryWrapper<>(); // wraper根据user来包装自己的的参数
        wrapper.eq("password","123456").gt("age",20);
        Integer integer = this.userMapper.selectCount(wrapper);
        System.out.println(integer);
    }
SELECT COUNT( 1 ) FROM tb_user WHERE password = ? AND age > ? 

entity查询多条列表

    @Test
    public void testSelectAll(){
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        // 查询条件
        wrapper.like("email",".cn");
        List<User> users = this.userMapper.selectList(wrapper);
        users.forEach(user -> System.out.println(user));
    }
SELECT id,user_name,name,age,email AS mail FROM tb_user WHERE email LIKE ? 

entity查询全部记录(并翻页)

  • 配置插件
    在这里插入图片描述
  • 测试类
    @Test
    public void testSelectPage(){
        Page<User> page = new Page<>(1,2); // 第一页 查询一条数据
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        // 查询条件
        wrapper.like("email",".cn");
        IPage<User> userIPage = this.userMapper.selectPage(page, wrapper);
        System.out.println(userIPage.getTotal());
        System.out.println(userIPage.getPages());
        System.out.println(userIPage.getCurrent());
        List<User> records = userIPage.getRecords();
        records.forEach(item -> System.out.println(item));
    }
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 10:53:18  更:2022-07-03 10:56:11 
 
开发: 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/20 2:42:45-

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