常用注解
1、在实体类上能用 @TableName(“真实表名”) 来与实体类进行关联;
2、在实体中能用 @TableId 标注为id;
3、在实体中能用 @TableName(“真实列名”) 来与实体中变量一一对应;
排除非标字段的三种方式:
1、 增加transient作为修饰,但序列化不能用;
2、使用static修改,需要手动生成get,set方法;
3、增加注解 @TableField(exist=false)
插入操作
@Test
public void insert(){
User user = new User();
user.setName("刘国强");
user.setAge(35);
user.setManagerId(1087982257332887553L);
user.setCreateTime(LocalDateTime.now());
int count = userMapper.insert(user);
System.out.println("影响记录数:" + count);
}
查询操作,需求如下:
一、查询需求
1、名字中包含雨并且年龄小于40
name like ‘%雨%’ and age<40
2、名字中包含雨年并且龄大于等于20且小于等于40并且email不为空
name like ‘%雨%’ and age between 20 and 40 and email is not null
3、名字为王姓或者年龄大于等于25,按照年龄降序排列,年龄相同按照id升序排列
name like ‘王%’ or age>=25 order by age desc,id asc
4、创建日期为2019年2月14日并且直属上级为名字为王姓
date_format(create_time,’%Y-%m-%d’)=‘2019-02-14’ and manager_id in (select id from user where name like ‘王%’)
5、名字为王姓并且(年龄小于40或邮箱不为空)
name like ‘王%’ and (age<40 or email is not null)
6、名字为王姓或者(年龄小于40并且年龄大于20并且邮箱不为空)
name like ‘王%’ or (age<40 and age>20 and email is not null)
7、(年龄小于40或邮箱不为空)并且名字为王姓
(age<40 or email is not null) and name like ‘王%’
8、年龄为30、31、34、35
age in (30、31、34、35)
9、只返回满足条件的其中一条语句即可
limit 1
二、select中字段不全部出现的查询
10、名字中包含雨并且年龄小于40(需求1加强版)
第一种情况:select id,name
from user
where name like ‘%雨%’ and age<40
第二种情况:select id,name,age,email
from user
where name like ‘%雨%’ and age<40
代码如下:
@Test
public void selectById(){
User user = userMapper.selectById("1087982257332887553");
System.out.println(user);
}
@Test
public void selectIds(){
List<Long> ids = Arrays.asList(1087982257332887553L, 1088248166370832385L, 1088250446457389058L);
List<User> users = userMapper.selectBatchIds(ids);
users.forEach(System.out::println);
}
@Test
public void selectByMap(){
Map<String, Object> map = new HashMap<>();
map.put("name", "王天风");//key为数据库中的列
map.put("age", 25);
List<User> users = userMapper.selectByMap(map);
users.forEach(System.out::println);
}
/**
* 1、名字中包含雨并且年龄小于40
* name like '%雨%' and age<40
*/
@Test
public void selectByWrapper1(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//QueryWrapper<User> queryWrapper1 = Wrappers.<User>query();
queryWrapper.like("name", "雨").lt("age", 40);
List<User> userList = userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
/**
* 2、名字中包含雨年并且龄大于等于20且小于等于40并且email不为空
* name like '%雨%' and age between 20 and 40 and email is not null
*/
@Test
public void selectByWrapper2(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//QueryWrapper<User> queryWrapper1 = Wrappers.<User>query();
//queryWrapper.like("name", "雨").ge("age", 20).le("age", 40).isNotNull("email");
queryWrapper.like("name", "雨").between("age",20,40).isNotNull("email");
List<User> userList = userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
/**
* 3、名字为王姓或者年龄大于等于25,按照年龄降序排列,年龄相同按照id升序排列
* name like '王%' or age>=25 order by age desc,id asc
*/
@Test
public void selectByWrapper3(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//QueryWrapper<User> queryWrapper1 = Wrappers.<User>query();
queryWrapper.likeLeft("name","王").or().ge("age",25).orderByDesc("age").orderByAsc("id");
List<User> userList = userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
/**
* 4、创建日期为2019年2月14日并且直属上级为名字为王姓
* date_format(create_time,'%Y-%m-%d')='2019-02-14' and manager_id in (select id from user where name like '王%')
*/
@Test
public void selectByWrapper4(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.apply("date_format(create_time,'%Y-%m-%d')={0}","2019-02-14")
.inSql("manager_id","select id from user where name like '王%'");
List<User> userList = userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
/**
* 5、名字为王姓并且(年龄小于40或邮箱不为空)
* name like '王%' and (age<40 or email is not null)
*/
@Test
public void selectByWrappe5(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.likeRight("name", "王").and(t->t.lt("age",40).or().isNotNull("email"));
List<User> userList = userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}