MybatisPlus入门(八)MybatisPlus-DQL编程控制

一、字段映射与表名映射

数据库表和实体类名称一样自动关联,数据库表和实体类有部分情况不一样。

问题一:表名与编码开发设计不同步,表名和实体类名称不一致。

解决办法:

在模型类上方,使用@TableName注解,通过value属性,设置当前类对应的数据库表名称。

示例代码如下:

java 复制代码
package com.it.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

//lombok
@Data
@TableName("tbl_user")//
public class User {
    private Long id;
    private String name;
    @TableField(value = "pwd",select = false)
    private String password;
    private Integer age;
    private String tel;
    @TableField(exist = false)
    private Integer online;
}

问题二:表字段与编码属性设计不同步

解决办法:

在模型类属性上方,使用@TableField属性注解,通过value属性,设置当前属性对应的数据库表中的字段关系。

示例代码:

java 复制代码
package com.it.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

//lombok
@Data
@TableName("tbl_user")//
public class User {
    private Long id;
    private String name;
    @TableField(value = "pwd",select = false)
    private String password;
    private Integer age;
    private String tel;
    @TableField(exist = false)
    private Integer online;
}

问题三:编码中添加了数据库中未定义的属性

在User实体类中定义了 是否在线属性。

解决办法:

在模型类属性上方,使用@TableField注解,通过exist属性,设置属性在数据库表字段中是否存在,默认为true。此属性无法与value合并使用。

示例代码:

java 复制代码
package com.it.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

//lombok
@Data
@TableName("tbl_user")//
public class User {
    private Long id;
    private String name;
    @TableField(value = "pwd",select = false)
    private String password;
    private Integer age;
    private String tel;
    @TableField(exist = false)
    private Integer online;
}

问题四:采用默认查询开放了更多的字段查看权限

用字段列表查询,列出字段,带有索引往前排,不带索引的往后排,查询效率有一定提升。

解决办法:

在模型类属性上方,使用@TableField注解,通过select属性:设置该属性是否参与查询。此属性与select()映射配置不冲突。

示例代码:

java 复制代码
package com.it.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

//lombok
@Data
@TableName("tbl_user")//
public class User {
    private Long id;
    private String name;
    @TableField(value = "pwd",select = false)
    private String password;
    private Integer age;
    private String tel;
    @TableField(exist = false)
    private Integer online;
}

单元测试代码:

java 复制代码
package com.it;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  ...
   

@SpringBootTest
class Mybatisplus02DqlApplicationTests {

    @Autowired
    private UserDao userDao;

    @Test
    void testGetAll() {

        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);




    }

}

经过测试,字段名与表名映射成功。

相关推荐
endcy20162 天前
mybatis-plus多租户兼容多字段租户标识
java·mybatis-plus·多租户
辗转反侧着疑惑13 天前
MyBatis Plus 【详解】| 学习日志 | 第 17 天
java·开发语言·学习·mybatis·mybatis-plus
未聞花名丶13 天前
Idea2025.2 MybatisX插件失效问题
idea·mybatis-plus·mybatisx
胡斌附体2 个月前
mybatis-plus逻辑删除配置
java·mybatis·mybatis-plus·逻辑删除
追风少年浪子彦2 个月前
mybatis-plus实体类主键生成策略
java·数据库·spring·mybatis·mybatis-plus
●VON2 个月前
重生之我在暑假学习微服务第二天《MybatisPlus-下篇》
java·学习·微服务·架构·mybatis-plus
执笔诉情殇〆2 个月前
SpringBoot3(若依框架)集成Mybatis-Plus和单元测试功能,以及问题解决
java·spring boot·junit·mybatis-plus
岁岁岁平安5 个月前
基于SpringBoot3实现MyBatis-Plus(SSMP)整合快速入门CURD(增删改查)
java·spring boot·spring·java-ee·mvc·mybatis·mybatis-plus
依旧很淡定5 个月前
14-SpringBoot3入门-MyBatis-Plus之CRUD
mybatis-plus·crud
我要学编程(ಥ_ಥ)5 个月前
初始JavaEE篇 —— Mybatis-plus 操作数据库
java·java-ee·mybatis·mybatis-plus