用IEDA查询,删除 数据库表的练习

package com.jt.test;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.jt.mapper.UserMapper;
import com.jt.pojo.User;
import org.apache.ibatis.annotations.Update;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.util.StringUtils;

import javax.sound.midi.Soundbank;
import java.util.List;

@SpringBootTest
public class TestMybatis {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void finAll(){
        System.out.println(userMapper.findAll());
    }
   

## 思想:以对象的方式操作数据库,单表几乎不写SQL

    
简化CURD操作

    @Test
    public void testInsert(){
        User user = new User();
        user.setName("MP").setAge(19).setSex("其他");
        userMapper.insert(user);
    }
   

##根据ID主键 查询id=1的数据

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

##查询name = ‘小乔’ sex = ‘男’ 的用户

    //sql:select * from demo_user where name='xx' and sex='xx'
    public void testSelect2(){
        //创建条件构造器,封装where条件的
        User user = new User();
        user.setName("小乔").setSex("男");
        QueryWrapper queryWrapper = new QueryWrapper(user);
        List<User> userList = userMapper.selectList(queryWrapper);
        System.out.println(userList);
    }
    @Test
    public void testSelect3() {
        QueryWrapper<User> queryWrapper = new QueryWrapper();
        queryWrapper.eq("name", "小乔")
                    .eq("sex", "男");
        List<User> userList = userMapper.selectList(queryWrapper);
        System.out.println(userList);
    }
    

## 查询 age > 18 and sex = '女'

    //逻辑运算符 > gt, <lt,  = eq,  <=le,  !=ne
    @Test
    public void testSelect4() {
        QueryWrapper<User> queryWrapper = new QueryWrapper();
        queryWrapper.gt("age", "18")
                    .eq("sex", "女");
        List<User> userList = userMapper.selectList(queryWrapper);
        System.out.println(userList);
    }
  

## like关键字 -- 模糊查询

## 查询 name 包含 ‘乔’ where name like " %乔%

## 查询以 ‘乔’ 结尾的 where name like " %乔 "

    @Test
    public void testSelect5() {
        QueryWrapper<User> queryWrapper = new QueryWrapper();
        queryWrapper.like("name", "王");  //查询名字包含 王 字的名字
        //queryWrapper.likeLeft("name", "乔");  //查询名字以 乔 字结尾的名字
        List<User> userList = userMapper.selectList(queryWrapper);
        System.out.println(userList);


    }
   

## 需求 : 查询ID为 1,3,5,6 的数据

    /* in 关键字
    *  需求 : 查询ID为 1,3,5,6 的数据
    *  Sql : select * from demo_user where id in (1,3,5,6)
    *  java基础 : 参数中使用...表示可变参数类型 多个参数之间逗号(,)分割
    *             一般定义可变参数类型时一般位于方法最后一位
    *             可变参数类型的实质,就是数组,写法不同
    * */
    @Test
    public void testSelect6() {
        //一般的数组采用包装类型,使用对象身上的方法,基本类型没有方法
        Integer[] ids = {1,3,5,6};
        QueryWrapper<User> queryWrapper = new QueryWrapper();
        queryWrapper.in("id",ids);
        //采用可变参数  实现查询
        queryWrapper.in("id", 1,3,5,6);
        List<User> userList = userMapper.selectList(queryWrapper);
        System.out.println(userList);
        /* public void inxxx(String name,Integer age,Integer... id){}*/
    }

## 需求:查询性别为 男 的用户并且按 年龄 降序排列

    /* 关键字 order by 排序
    *  默认规则: 升序-asc  降序-desc
    *  需求:查询性别为 男 的用户并且按 年龄 降序排列
    *  sql:select * from demo_user where sex='男' order by age desc
    * */
    @Test
    public void testSelect7() {
        QueryWrapper<User> queryWrapper = new QueryWrapper();
        queryWrapper.eq("sex", "男")
                    .orderByDesc("age");
        List<User> userList = userMapper.selectList(queryWrapper);
        System.out.println(userList);
    }

## 案例: 根据 sex age 查询数据

    /* 动态sql: 如果某些数据不为mull,则需要拼接为where条件
    *  案例: 根据 sex age 查询数据
    *  1.select * from demo_user where age > 18 and sex = '女'
    *  API说明:queryWrapper。gt(判断条件,字段名称,字段值)
    *          判断条件: true  则动态的拼接where条件
    *                   false 不会拼接where条件
    * 判断语句:
     *       Boolean sexBoo = (sex !=null) && sex.length()>0;
    * */
    @Test
    public void testSelect8() {
        //Integer age = 18;  //值可改变
        Integer age = null;
        //String sex = "女"; //值可改变
        String sex = null;
        QueryWrapper<User> queryWrapper = new QueryWrapper();
        boolean ageBoo = (age != null);
        //boolean sexBoo = (sex != null) && sex.length() > 0; //字符串的判断
        boolean sexBoo = StringUtils.hasLength(sex);
        queryWrapper.gt(ageBoo, "age", age)
                    .eq(sexBoo,"sex", "女");
        List<User> userList = userMapper.selectList(queryWrapper);
        System.out.println(userList);
    }

## 只获取主键ID的值

    /* 只获取主键ID的值
    *  Sql : select id from demo_user where ....
    * */
    @Test
    public void testSelect9() {
        List<Object> idList = userMapper.selectObjs(null); //<Object>可以不写
        System.out.println(idList);
    }

## 删除name="xxx"的数据

    /*
     * 删除name="xxx"的数据
     */
    public void testDelete(){
        //删除ID为100的数据
        userMapper.deleteById(100);
        //userMapper.deleteBatchIds(null); --删除全部
        //删除操作的条件构造器
        QueryWrapper queryWrapper = new QueryWrapper();
        queryWrapper.eq("name", "xxx");  //xxx--要删除的名字
        userMapper.delete(queryWrapper);
    }

## 案例1:要求修改id=232 name 改为=“晚上吃什么”

    /* 数据修改:
    *  案例1:要求修改id=232 name 改为=“晚上吃什么”
    *  APL说明 :userMapper.updateById(对象信息);
    * */
    @Test
    public void testUpdate(){
        //修改除ID之外的所有不为null的数据 ,id当作where唯一条件
        User user = new User();
        user.setId(232).setName("晚上吃什么");
        userMapper.updateById(user);
    }
    

## 案例2: 将name=mp的用户改为name="宵夜吃什么" age=20 sex=女

    /* 数据修改
     * 案例2:  将name=mp的用户改为name="宵夜吃什么" age=20 sex=女
     * API说明:
     *         userMapper.update(对象,修改条件构造器)
     *         对象: 修改后的数据使用对象封装
     *         修改条件构造器: 负责修改的where条件
     */

    @Test
    public void testUpdate2(){
        User user = new User();
        user.setName("宵夜吃什么").setAge(20).setSex("女");
        UpdateWrapper updateWrapper = new UpdateWrapper();
        updateWrapper.eq("name", "MP");
        userMapper.update(user,updateWrapper);
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值