之前搭建的在上一篇博客中已经写好了。
链接:https://blog.csdn.net/weixin_45821811/article/details/115678015
今天的任务是去康康这个条件构造器。
我主要是做了测试 这个只是方便大家更简单的理解
但是具体的使用和深层次的理解 还是需要大家一步一步手动测试的。
下面是自己做的测试 大家可以康一康 个人觉得这种还是需要在项目中才能理解的更加深刻
项目里的需求种类更多。
// 条件构造器
//TODO 条件查询 allEq
@Test
public void allEq() {
QueryWrapper wrapper = new QueryWrapper();
Map<String, Object> map = new HashMap<>();
map.put("name", "李小斌");
wrapper.allEq(map);
User user = userMapper.selectOne(wrapper);
// 拼接完后的SQL select * from user where name=’李小斌‘
System.out.println(user);
}
// TODO 等于=
@Test
public void eq1() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("name", "李小斌");
User user = userMapper.selectOne(wrapper);
// 拼接完后的SQL select * from user where name=’李小斌‘
System.out.println(user);
}
//TODO 不等于符号 <> ne
@Test
public void ne() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.ne("name", "李小斌");
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where name<>’李小斌‘ 就是name不等于李小斌
list.forEach(System.out::println);
}
//TODO 大于符号 > gt
@Test
public void gt() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.gt("id", "1");
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where id>1
list.forEach(System.out::println);
}
//TODO 大于等于符号 >= ge
@Test
public void ge() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.ge("id", "2");
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where id>=2
list.forEach(System.out::println);
}
//TODO 小于符号 < lt
@Test
public void lt() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.lt("id", "2");
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where id<2
list.forEach(System.out::println);
}
//TODO 小于等于符号 <= le
@Test
public void le() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.le("id", "2");
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where id<=2
list.forEach(System.out::println);
}
//TODO BETWEEN 值1 AND 值2 between BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。
// between("age", 18, 30)--->age between 18 and 30
@Test
public void between() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.between("id", 1, 5);
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where id between 1 and 5
list.forEach(System.out::println);
}
//TODO NOT BETWEEN 值1 AND 值2 notBetween NOT BETWEEN 操作符在 WHERE 子句中使用,作用是选取不介于两个值之间的数据范围。
// notBetween("age", 18, 30)--->age not between 18 and 30
@Test
public void notBetween() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.notBetween("id", 1, 5);
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where id not between 1 and 5
list.forEach(System.out::println);
}
//TODO like LIKE '%值%' like("name", "王")--->name like '%王%'
@Test
public void like() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.like("name", "李");
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where name like '%李%"'
list.forEach(System.out::println);
}
//TODO notLike NOT Like '%值%' notLike("name", "王")--->name not like '%王%'
@Test
public void notLike() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.notLike("name", "李");
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where name not like '%李%'
list.forEach(System.out::println);
}
//TODO likeRight LIKE '值%' likeRight("name", "王")--->name like '王%'
@Test
public void likeRight() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.likeRight("name", "李");
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where name not like '李%'
list.forEach(System.out::println);
}
//TODO isNull 字段 IS NULL isNull("name")--->name is null
@Test
public void isNull() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.isNull("age");
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where age is null 就是找到age 为空的 数据
list.forEach(System.out::println);
}
//TODO isNotNull 字段 IS NOT NULL isNotNull("name")--->name is not null
@Test
public void isNotNull() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.isNotNull("age");
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where age is not null 就是找到age不为空的数据
list.forEach(System.out::println);
}
//TODO in 字段 IN (value.get(0), value.get(1), ...)
// in("age",{1,2,3})--->age in (1,2,3)
@Test
public void in() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.in("id", Arrays.asList("1", "2", "3"));
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where id in (1,2,3)
list.forEach(System.out::println);
}
//TODO in 字段 IN (v0, v1, ...)
// in("age", 1, 2, 3)--->age in (1,2,3)
@Test
public void in2() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.in("id", 1, 2, 3);
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where id in (1,2,3)
list.forEach(System.out::println);
}
//TODO notIn 字段 NOT IN (value.get(0), value.get(1), ...)
// notIn("age",{1,2,3})--->age not in (1,2,3)
@Test
public void notIn() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.notIn("id", Arrays.asList("1", "2", "3"));
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where id not in (1,2,3)
list.forEach(System.out::println);
}
//TODO notIn 字段 NOT IN (value.get(0), value.get(1), ...)
// notIn("age", 1, 2, 3)--->age not in (1,2,3)
@Test
public void notIn2() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.notIn("id", 1, 2, 3);
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where id not in (1,2,3)
list.forEach(System.out::println);
}
//TODO inSql 字段 IN ( sql语句 ) inSql("age", "1,2,3,4,5,6")--->age in (1,2,3,4,5,6)
@Test
public void inSql1() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.inSql("age", "1,2,3,4,5,6");
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where age in (1,2,3,4,5,6)
list.forEach(System.out::println);
}
//TODO inSql 字段 IN ( sql语句 )
// inSql("id", "select id from table where id < 3")--->id in (select id from table where id < 3)
@Test
public void inSql2() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.inSql("id", "select id from user where id < 3");
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where id in (select id from user where id < 3)
list.forEach(System.out::println);
}
//TODO notInSql 字段 NOT IN ( sql语句 )
// notInSql("age", "1,2,3,4,5,6")--->age not in (1,2,3,4,5,6)
@Test
public void notInSql() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.notInSql("age", "1,2,3,4,5,6");
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where age not in (1,2,3,4,5,6)
list.forEach(System.out::println);
}
//TODO notInSql 字段 NOT IN ( sql语句 )
// notInSql("id", "select id from table where id < 3")--->id not in (select id from table where id < 3)
@Test
public void notInSql2() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.notInSql("id", "select id from user where id < 3");
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where id in (select id from user where id < 3)
list.forEach(System.out::println);
}
//TODO orderByAsc 排序:ORDER BY 字段, ... ASC
// orderByAsc("id", "name")--->order by id ASC,name ASC
@Test
public void orderByAsc() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.orderByAsc("id", "name");
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user order by id ASC,name ASC
list.forEach(System.out::println);
}
//TODO orderByDesc 排序:ORDER BY 字段, ... ASC
// orderByDesc("id", "name")--->order by id DESC,name DESC
@Test
public void orderByDesc() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.orderByDesc("id", "name");
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user order by id DESC,name DESC
list.forEach(System.out::println);
}
//TODO orderBy 排序:ORDER BY 字段, ...
// orderBy(true, true, "id", "name")--->order by id ASC,name ASC
@Test
public void orderBy() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.orderBy(true, true, "id", "name");
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user order by id ASC,name ASC
list.forEach(System.out::println);
}
//TODO nested 正常嵌套 不带 AND 或者 OR
// nested(i -> i.eq("name", "李白").ne("status", "活着"))--->(name = '李白' and status <> '活着')
@Test
public void nested() {
QueryWrapper<User> wrapper = new QueryWrapper<User>();
wrapper.nested(i -> i.eq("name", "李小斌").ne("id", "3"));
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where name='李小斌' and id <>3
list.forEach(System.out::println);
}
//TODO apply 拼接 sql
// apply("id = 1")--->id = 1
// apply("date_format(dateColumn,'%Y-%m-%d') = '2008-08-08'")--->date_format(dateColumn,'%Y-%m-%d') = '2008-08-08'")
@Test
public void apply() {
QueryWrapper<User> wrapper = new QueryWrapper<User>();
wrapper.apply("id=1");
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where id = 1
list.forEach(System.out::println);
}
//TODO last 拼接 sql
// 无视优化规则直接拼接到 sql 的最后 只能调用一次,多次调用以最后一次为准 有sql注入的风险,请谨慎使用
// last("limit 1")
@Test
public void last() {
QueryWrapper<User> wrapper = new QueryWrapper<User>();
wrapper.last("limit 1,3");
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user limit 1 ,3
list.forEach(System.out::println);
}
//TODO exists 拼接 EXISTS ( sql语句 )
// exists("select id from table where age = 1")--->exists (select id from table where age = 1)
@Test
public void exists() {
QueryWrapper<User> wrapper = new QueryWrapper<User>();
wrapper.exists("select id from user where age = 3");
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where exists (select id from table where age = 3) 存在就返回true
list.forEach(System.out::println);
}
@Test
public void and() {
QueryWrapper<User> wrapper = new QueryWrapper<User>();
wrapper.eq("name", "lxb").and(i -> i.eq("age", "3").ne("id", "100"));
List<User> list = userMapper.selectList(wrapper);
// 拼接完后的SQL select * from user where name='lxb' and age=3 and id<>100
list.forEach(System.out::println);
}
打工人干饭了干饭了。