首页 > 其他分享 >mybatisplus拾遗

mybatisplus拾遗

时间:2022-09-26 15:47:37浏览次数:58  
标签:QueryWrapper mybatisplus 自定义 usermapper 接口 拾遗 user User

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表达式构造器:
@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("[email protected]");
        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());
    }
}

  

 

标签:QueryWrapper,mybatisplus,自定义,usermapper,接口,拾遗,user,User
From: https://www.cnblogs.com/yszr/p/16731142.html

相关文章

  • springboot中使用mybatisplus自带插件实现分页
    springboot中使用mybatisplus自带插件实现分页1.导入mybatisplus分页依赖<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-......
  • MybatisPlus代码生成器
    1、导入依赖<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.1</version></dependency><d......
  • 【web项目 MybatisPlus 01】
    为了更加容易掌握MybatisPlus的内容,需要先创建数据库,然后进行实际操作掌握一、MybatisPlus demo1、创建数据库mybatis_plus2、创建User表CREATETABLEUSER(......
  • mybatisplus打印SQL日志 【mybatisplus专栏】
    一、mybatisplus如何打印SQL日志:在SpringBoot项目中添加以下配置#方式一mybatis-plus:configuration:log-impl:org.apache.ibatis.logging.stdout.StdOutImp......
  • MyBatisPlus-范围查询、模糊查询及排序查询
    MyBatisPlus-范围查询、模糊查询及排序查询原文链接:https://blog.csdn.net/m0_61961937/article/details/125967684一、范围查询二、模糊查询三、排序查询一、范围查......
  • mybatisplus SQL一对多
    https://blog.csdn.net/Isyoubao/article/details/122212113 重点:<collectionproperty=“nspSchedulings”…/>property=“value”:对应list集合字段,当前为医生排班......
  • MybatisPlus笔记
    MyBatis-PlusMyBatis-Plus概述需要基础:学习过Spring、SpringMVC、Mybatis为什么要学习它呢?MyBatisPlus可以节省我们大量的工作时间,所有的CRUD代码都可以自动化完成!JPA......
  • MybatisPlus笔记
    MyBatis-PlusMyBatis-Plus概述需要基础:学习过Spring、SpringMVC、Mybatis为什么要学习它呢?MyBatisPlus可以节省我们大量的工作时间,所有的CRUD代码都可以自动化完成!JPA......
  • MybatisPlus拦截器打印完整SQL、分页、自动填充处理
    MybatisPlus拦截器打印完整SQLMybatisPlus虽然也自带了一个打印SQL的配置,但是不方便查看,也没有时间统计mybatis-plus:configuration:log-impl:org.apache.ib......
  • Springboot+MybatisPlus多数据源比对数据
    欢迎关注博主公众号「Java大师」,专注于分享Java领域干货文章https://www.javaman.cn/基于不同的数据源进行数据比对,比较两个数据库的表之间数据的总量,以及处理后的总......