【Lazy ORM 查询使用手册】1.2.2-JDK17-SNAPSHOT

Gitee

点赞关注不迷路 项目地址

版本信息 1.2.2-JDK17-SNAPSHOT

新增 inOr查询 防止in查询索引失效

用法

       public void select() {
            LazyUserTest lazyUserTest = new LazyUserTest();
            lazyUserTest.setUsername("紧");
            lazyUserTest.setSex(LazyUserTest.Sex.MAN);
            lazyUserTest.setId(12L);
            lazyLambdaStream.upsert(lazyUserTest);
            lazyLambdaStream.update(lazyUserTest, LazyWrappers.<LazyUserTest>lambdaWrapper().eq(LazyUserTest::getSex, LazyUserTest.Sex.MAN));
        
            List<LazyUserTest> lazyUserTests = lazyLambdaStream.selectList(LazyWrappers.<LazyUserTest>lambdaWrapper()
                    .inOr(LazyUserTest::getAge, List.of(18, 19, 20))
            );
            System.out.println("18、19、20 age user:" + lazyUserTests);
            // 打印信息
            // 执行类型: =====> SELECT  
            //执行sql: =====>  SELECT  lazy_user_test.birthday as birthday , lazy_user_test.sex as sex , lazy_user_test.id as id , lazy_user_test.username as username , lazy_user_test.is_deleted as is_deleted , lazy_user_test.age as age  from lazy_user_test where  (   lazy_user_test.age =  18 or lazy_user_test.age =  19 or lazy_user_test.age =  20  )  and  is_deleted  = false
            // 18、19、20 age user:[]
        }

selectOne 查询

       public void select() {
            LazyUserTest lazyUserTest = new LazyUserTest();
            lazyUserTest.setUsername("紧");
            lazyUserTest.setSex(LazyUserTest.Sex.MAN);
            lazyUserTest.setId(12L);
            lazyLambdaStream.upsert(lazyUserTest);
            lazyLambdaStream.update(lazyUserTest, LazyWrappers.<LazyUserTest>lambdaWrapper().eq(LazyUserTest::getSex, LazyUserTest.Sex.MAN));
        
            LazyUserTest lazyUserTest = lazyLambdaStream.selectOne(LazyWrappers.<LazyUserTest>lambdaWrapper()
                    .eq(LazyUserTest::getId, 12L)
                    .eq(LazyUserTest::getIsDeleted, false)
            );
            System.out.println(" user :" + lazyUserTest);
            // 打印信息
            // 执行类型: =====> SELECT  
            //执行sql: =====>  SELECT  lazy_user_test.birthday as birthday , lazy_user_test.sex as sex , lazy_user_test.id as id , lazy_user_test.username as username , lazy_user_test.is_deleted as is_deleted , lazy_user_test.age as age  from lazy_user_test where   lazy_user_test.id =  12    and  is_deleted  = false
            // 18、19、20 age user:[]
        }

统计数据

    @Test
    public void  count(){
        Long count = lazyLambdaStream.count(LazyWrappers.<LazyUserTest>lambdaWrapper()
                .eq(LazyUserTest::getIsDeleted, false)
                .eq(LazyUserTest::getSex, LazyUserTest.Sex.MAN)
                .gt(LazyUserTest::getAge, 10)
                .gt(LazyUserTest::getBirthday, LocalDateTime.now()));
        // 如同执行如下sql select count(1) from lazy_user_test where  lazy_user_test.is_deleted  = false  and  lazy_user_test.sex  = 'MAN'  and  lazy_user_test.age  > 10  and  lazy_user_test.birthday  > '2024-02-06 20:21:03'  and  lazy_user_test.is_deleted  = false
        System.out.println("lazyLambdaStream.count:"+count);
    }

验证数据是否存在


    @Test
    public void  exists(){
        boolean exists = lazyLambdaStream.exists(LazyWrappers.<LazyUserTest>lambdaWrapper()
                .eq(LazyUserTest::getIsDeleted, false)
                .eq(LazyUserTest::getSex, LazyUserTest.Sex.MAN)
                .gt(LazyUserTest::getAge, 10)
                .gt(LazyUserTest::getBirthday, LocalDateTime.now()));
        // 如同执行如下sql select count(1) from lazy_user_test where  lazy_user_test.is_deleted  = false  and  lazy_user_test.sex  = 'MAN'  and  lazy_user_test.age  > 10  and  lazy_user_test.birthday  > '2024-02-06 20:21:03'  and  lazy_user_test.is_deleted  = false
        System.out.println("lazyLambdaStream.exists:"+exists);
    }

查询某一个字段


    @Test
    public void  selectName(){
        String userName = lazyLambdaStream.selectOne(LazyWrappers.<LazyUserTest>lambdaWrapper()
                .eq(LazyUserTest::getId, 1)
                .eq(LazyUserTest::getIsDeleted, false)
                        .onlyUseAs()
                        .as(LazyUserTest::getUsername,LazyUserTest::getUsername),
                String.class);
        // SELECT  lazy_user_test.username as username  from lazy_user_test where  lazy_user_test.id  = 1  and  lazy_user_test.is_deleted  = false  and  lazy_user_test.is_deleted  = false
        System.out.println("只查询用户ID为1 的用户名称:"+userName);
    }
    

查询部分字段减少IO

    @Test
    public void  selectNameIdAge(){
        LazyUserTest userNameIdAge = lazyLambdaStream.selectOne(LazyWrappers.<LazyUserTest>lambdaWrapper()
                        .eq(LazyUserTest::getId, 1)
                        .eq(LazyUserTest::getIsDeleted, false)
                        .onlyUseAs()

                        .as(LazyUserTest::getId,LazyUserTest::getId)
                        .as(LazyUserTest::getAge,LazyUserTest::getAge)
                        .as(LazyUserTest::getUsername,LazyUserTest::getUsername)
                ,
                LazyUserTest.class);
        // SELECT  lazy_user_test.id as id , lazy_user_test.username as username , lazy_user_test.age as age  from lazy_user_test where  lazy_user_test.id  = 1  and  lazy_user_test.is_deleted  = false  and  lazy_user_test.is_deleted  = false
        System.out.println("只查询用户ID为1 的用户名称、ID、age:"+userNameIdAge);
    }

关联查询

List<Menu> menuList = lazyLambdaStream.selectList(LazyWrappers.<RoleMenuDO>lambdaWrapper()
                        .eq(RoleMenuDO::getIsDeleted, false)
                        .eq(RoleMenuDO::getRoleId, role.getId())
                        .internalJoin(LazyWrappers.<RoleMenuDO, MenuDO>lambdaWrapperJoin()
                                .eqo(RoleMenuDO::getIsDeleted, false)
                                .eqo(RoleMenuDO::getRoleId, role.getId())
                                .eq(RoleMenuDO::getMenuId, MenuDO::getId)
                                .eqRighto(MenuDO::getIsDeleted, false)
                        )
                        .onlyUseAs()
                        .as(Menu.class),
                        Menu.class
                );

insert使用

    public void insert() {
        LazyUserTest lazyUserTest = new LazyUserTest();
        lazyUserTest.setUsername("紧");
        lazyUserTest.setSex(LazyUserTest.Sex.MAN);
        lazyUserTest.setId(12L);
        lazyLambdaStream.insert(lazyUserTest);
        // insert into lazy_user_test (id,username,birthday,sex,age,is_deleted) VALUES (12,'紧',null,'MAN',null,null)
    }

upsert使用


    public void upsert() {
        LazyUserTest lazyUserTest = new LazyUserTest();
        lazyUserTest.setUsername("紧");
        lazyUserTest.setSex(LazyUserTest.Sex.MAN);
        lazyUserTest.setId(12L);
        lazyLambdaStream.upsert(lazyUserTest);
        // insert into lazy_user_test (id,username,birthday,sex,age,is_deleted) VALUES (12,'紧',null,'MAN',null,null)  ON DUPLICATE KEY UPDATE username=values (username),birthday=values (birthday),sex=values (sex),age=values (age),is_deleted=values (is_deleted)
    }
    

前言

当使用Lazy ORM 框架操作数据库时使用高级映射

场景

如查询用户时需要关联出用户的其他信息如地址、角色

使用方法

可以再对应的查询结果实体上添加

  1. 自动映射用户对应的地址(一对一)
    @LazyTableTranslationOneField(translationSourceName = "addressId", translationTargetName = "id", columnList = "addressName",
            translationTargetTableName = "lazy_table_address", type = LazyTranslationTableEndpoint.Type.COLUMN,
            lazyTranslationAPIClass = LazyTableTranslationOneAPI.class)
    @LazyTableField(exist = false)

注解属性:

	translationSourceName:当前返回实体(查询出的结果需要根据这个字段的数据进行映射)
	translationTargetName:目标数据库字段
	columnList:查询目标表需要返回那些字段(可以是多个会自动映射成对象)
	translationTargetTableName:目标表名称
	type:指定映射类型包含所有字段、指定字段。默认所有字段
	lazyTranslationAPIClass:需要自定义转译api在这里声明

2.一对多(type为LazyTranslationTableEndpoint.Type.ALL 或者columnList枚举出想要的字段)

    @LazyTableTranslationOneToManyField(
            translationSourceName = "id",
            translationTargetName = "automationId",
            translationTargetTableName = "automation_node",
            translationTargetType = AutomationNode.class,
            type = LazyTranslationTableEndpoint.Type.ALL
    )
  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小吴小吴bug全无

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值