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);
}
用IEDA查询,删除 数据库表的练习
最新推荐文章于 2024-04-02 23:03:32 发布