mybatisplus拾遗
curd方法:
1:basemapper 自带原生类:可操作基本的curd,
2:iservice 此为接口,需要使用自定义接口userservice (/自定义userserivice集成iservice //为什么要自定义userservice,是要后期既可以使用iservice又能自定义使用方法,不被限制、)然后在定义一个类去使用自定义的接口,才能应用iservice的方法,可进行批量的插入操作,basemapper里面不支持批量操作
3:条件构造器:
QueryWrapper<User> qry = new QueryWrapper<>();
qry.like("username","aaa")
.between("age",20,30)
.isNotNull("email");
List<User> users = usermapper.selectList(qry);
System.out.println(users);
4:lamda表达式构造器:
LambdaQueryWrapper
LambdaupdateWrapper
@Test
void testwhere(){
//LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
/*lqw.lt(User::getAge,20);
lqw.gt(User::getAge,15);*/
//小于18或者大于30
//lqw.lt(User::getAge,18).or().gt(User::getAge,30);
//空判断处理
/*Integer a = 20;
lqw.gt(null != a,User::getAge,a);
lqw.select(User::getId,User::getAge);*/
QueryWrapper<User> lqw2 = new QueryWrapper<User>();
// lqw2.select("id","age");
//List<Map<String, Object>> maps = usermapper.selectMaps(lqw2);
lqw2.select("count(*) as count,email");
lqw2.groupBy("email");
//List<User> userList = usermapper.selectList(lqw2);
List<Map<String, Object>> maps = usermapper.selectMaps(lqw2);
System.out.println(maps);
}
注:QueryWrapper 与 lambdaquerywraper区别:
QueryWrapper与LambdaQueryWrapper
LambdaQueryWrapper<User> user= new LambdaQueryWrapper<>();
user.eq(User::getstate, 1);
user.eq(User::getenable, 1);
LambdaQueryWrapper使用的是Lambda语法:查询时,eq后面跟的是get的实体类名不需要要在写具体的字段名称,防止写错
::querywrapper需要写出具体的字段名来
QueryWrapper<User> user= new QueryWrapper<>();
user.eq("state", 1);
user.eq("enable", 1);
QueryWrapper使用的是数据库的字段名
区别:不同写“列名”,而是使用纯java的方式,避免了拼写错误(LambdaQueryWrapper的写法如果有错,则在编译期就会报错,而QueryWrapper需要运行的时候调用该方法才会报错)
扩展:接口的声明:public interface NameOfInterface、
接口的实现
当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。
类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。
实现一个接口的语法,可以使用这个公式:public class MammalInt implements Animal
接口的继承
一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。public interface Hockey extends Sports
举例:
基本的继承basermapper方法执行curl:
@Mapper
public interface userMapper extends BaseMapper<User> {
}
测试类中:
@SpringBootTest
class DemoApplicationTests {
@Autowired
private userMapper usermapper;
@Test
void getall() {
List<User> users = usermapper.selectList(null);
System.out.println(users);
}
@Test
void inserts(){
User user = new User();
user.setAge(18);
user.setEmail("2222@qq.com");
user.setMobile("15888888888");
user.setPassword("456789");
usermapper.insert(user);
}
@Test
void testdel(){
usermapper.deleteById(13L);
}
iservice方法:
新建userservice 接口
//自定义userserivice集成iservice
//为什么要自定义userservice,是要后期既可以使用iservice又能自定义使用方法,不被限制
public interface UserService extends IService<User> {
}
再建一个userserviceimpl 的类 注意是类不是接口
@Service
//使用自带的serviceimpl接口《自定义的usermapper,实体类》 再去实现自定义的userservice接口
public class UserServiceimpl extends ServiceImpl<userMapper, User> implements UserService {
}
然后就可以使用iservice的批量等操作了:
@SpringBootTest
public class IserviceTest {
@Autowired
private UserService userService;
@Test
void testiseviceget(){
//使用iservice中方法
// adminService中有很多方法
User byId = userService.getById(6);
// long count = userService.count();
System.out.println(byId);
}
/**
* 批量添加 basemapp里没有此方法,只能通过iserveice添加操作
*/
@Test
void testpiliang(){
List<User> obj = new ArrayList<>();
for (int i=1; i<10;i++) {
User user = new User();
user.setPassword("123123");
user.setEmail("1234"+i+"@qq.com");
user.setMobile("1588888888"+i);
user.setAge(20+i);
obj.add(user);
}
boolean b = userService.saveBatch(obj);
System.out.println(b);
}
@Test
void testpageiser(){
Page page = new Page(1,2);
Page page1 = userService.page(page);
System.out.println("当前页码:"+page1.getCurrent());
System.out.println("每页显示数:"+page1.getSize());
System.out.println("工多少页:"+page1.getPages());
System.out.println("工多少条:"+page1.getTotal());
System.out.println("数据:"+page1.getRecords());
}
}

浙公网安备 33010602011771号