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

  

 

posted @ 2022-09-26 15:32  御世制人  阅读(53)  评论(0编辑  收藏  举报