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()); } }