x
//用于测试
public class MyBatisPlusTest {
//自动装配,下面那行的userMapper报红线不用管,不影响运行
private UserMapper userMapper;//红线解决: 在UserMapper接口的最上面添加@Repository注解
//注意: userMapper是UserMapper接口类型的,而我们的UserMapper接口继承了BaseMapper接口,所以userMapper可以直接使用BaseMapper接口里面的方法
//用于运行测试方法--以selectList查询方法为例
public void zidingyi_testSelectList(){
//selectList方法的作用是通过条件构造器查询一个List集合,若没有条件,则可以null为参数
List<User> list = userMapper.selectList(null);
list.forEach(System.out::println);//forEach方法用于输出集合数据
}
//运行结果:查询出数据库的数据,以集合的方式输出。注意此时我们还没有在UserMapper接口里面写任何东西
//---------------------------------------------------------------------------------------------------------
//【测试BaseMapper接口提供给我们的方法】
//测试: 插入方法
public void zidingyi_testInsert(){
//由于insert方法需要一个实体类对象,所以我们先在下面那行创建一个实体类对象
User user = new User();//User是我们写的实体类
//然后就可以为这个对象的某个属性(或者说User类的某个成员变量、或者说数据库的某个字段)赋值
user.setName("张三");
user.setAge(18);
user.setEmail("张三@athuanf.com");
//把已经赋值的对象放到下面那行的insert方法
int result = userMapper.insert(user);//insert方法的返回值是受影响的行数
//上面那行执行之后,数据库的数据就会发生变化,我们顺便在下面那行输出一下受影响的行数
System.out.println("受影响的行数: "+result);
//其实还可以获取一下主键是谁,做法如下
System.out.println("主键: "+user.getId());//这个主键的值会很长,原因:id在mybatis-plus中默认是采用雪花算法生成的,所以id字段是bigint类型、id成员变量是long类型
}
//测试,deleteById删除方法,根据id删除
public void zidingyi_testDelete1(){
int result = userMapper.deleteById(1631865439841837057L);//如果id值超出int的范围,那么可以在尾部添加L,表示是long类型,而不是int类型的数据
//上面那行deleteById的返回值是受影响的行数
System.out.println("受影响的行数: "+result);
}
//测试,deleteByMap删除方法,根据Map集合删除,注意Map集合的数据是键值对
public void zidingyi_testDelete2(){
//由于deleteByMap方法需要一个Map集合作为参数,所以我们先创建一个Map集合
Map<String,Object> map = new HashMap<>();
map.put("name","张三");//往集合里面添加参数,注意是键值对的形式
map.put("age",23);
int result = userMapper.deleteByMap(map);//会删除name为张三,并且age为23的数据,注意name和age是同时满足,也就是某条数据的name是张三且age是23,那么这条数据才会被删除
//上面那行deleteByMap的返回值是受影响的行数
System.out.println("受影响的行数: "+result);
}
//测试,deleteBatchIds删除方法,根据id批量(由于是批量,所以我们要把id值写在一个list集合里面)删除
public void zidingyi_testDelete3(){
//可以先通过Arrays集合的asList方法,把id值写到集合里面,注意id值的结尾要加上L,注意集合的泛型是Long
List<Long> list = Arrays.asList(1L, 2L, 3L);
int result = userMapper.deleteBatchIds(list);//上面的list值,即会删除id为1,2,3的数据
//上面那行deleteByMap的返回值是受影响的行数
System.out.println("受影响的行数: "+result);
}
//修改,updateById修改方法,首先需要一个实体类对象,然后在实体类对象里面指定要修改的id,然后就可对该实体类进行某些字段的重新修改,最后把实体类对象作为updateById方法的参数即可
public void zidingyi_testUpdate(){
//由于updateById方法需要一个实体类对象,所以先创建一个User类的对象,User类是我们自己写好的,User类对接的是数据库
User user = new User();
user.setId(4L);//表示等下我们要修改id为4的数据
//在下面重新修改id为4的数据
user.setName("李四");
user.setEmail("lisi@athuanf.com");
//把修改好的user对象放到updateById方法里面
int result = userMapper.updateById(user);
//userMapper方法返回的是是受影响的行数
System.out.println("受影响的行数: "+result);
}
//查询,selectById查询方法,根据id值,查询单个数据
public void zidingyi_testSelect1(){
//查询id为1的数据,返回值类型必须是你的实体类,例如返回类型是User类,User类是我们自己写好的,User类对接的是数据库
User result = userMapper.selectById(1L);
//输出id为1的数据
System.out.println("id为1的数据是: "+result);
}
//查询,selectById查询方法,根据id值,查询多个数据,由于是查询多个数据,所以所以我们要把id值写在一个list集合里面
public void zidingyi_testSelect2(){
//可以先通过Arrays集合的asList方法,把id值写到集合里面,注意id值的结尾要加上L,注意集合的泛型是Long User result = userMapper.selectById(1L);
List<Long> list = Arrays.asList(1L, 2L, 3L);
List<User> userList = userMapper.selectBatchIds(list);//上面的list值,即会删除id为1,2,3的数据
//输出之前用forEach方法,先对集合中的每一个数据进行循环并输出
userList.forEach(System.out::println);
}
//查询,selectByMap查询方法,根据Map集合查询,注意Map集合的数据是键值对
public void zidingyi_testSelect3(){
//由于selectByMap方法需要一个Map集合作为参数,所以我们先创建一个Map集合
Map<String,Object> map_duixiang = new HashMap<>();
//把要查询的条件添加进map_duixiang对象里面,然后把map_duixiang对象作为参数写进selectByMap方法
map_duixiang.put("name","Jack");
map_duixiang.put("age",28);
//上面两行表示查询的是name为Jack,并且age为28的数据,注意name和age是同时满足,也就是某条数据的name是Jack且age是28,那么这条数据才会被查询
List<User> userList = userMapper.selectByMap(map_duixiang);
//上面那行的返回值是list集合
//输出之前用forEach方法,先对集合中的每一个数据进行循环并输出
userList.forEach(System.out::println);
}
//查询,selectList查询方法,如果条件为null,则表示所有数据
public void zidingyi_testSelect4(){
//selectList方法的作用是通过条件构造器查询一个List集合,若没有条件,则可以null为参数
List<User> list = userMapper.selectList(null);//注意参数为null表示查询所有数据
//输出之前用forEach方法,先对集合中的每一个数据进行循环并输出
list.forEach(System.out::println);
}
}