当前位置: 首页 > article >正文

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

一、字段映射与表名映射

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

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

 解决办法:   

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

示例代码如下:

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属性,设置当前属性对应的数据库表中的字段关系。

示例代码:

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合并使用。

示例代码:

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()映射配置不冲突。

示例代码:

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

单元测试代码:

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




    }

}

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


http://www.kler.cn/a/384043.html

相关文章:

  • C语言复习第7章 自定义类型(结构体+位段+枚举+联合体)
  • 将分类标签转换为模型可以处理的数值格式
  • 【大数据学习 | kafka高级部分】文件清除原理
  • 【测试工具篇一】全网最强保姆级教程抓包工具Fiddler(2)
  • 【论文复现】基于图卷积网络的轻量化推荐模型
  • TypeError: can‘t multiply sequence by non-int of type ‘float‘
  • 《重学Java设计模式》之 工厂方法模式
  • UE5.1 控制台设置帧率
  • python-斐波那契数列
  • 【计算机网络】章节 知识点总结
  • 基于STM32的贪吃蛇游戏教学
  • ruoyi若依vue分离版前端资源打包到jar中
  • 使用python向钉钉群聊发送消息
  • FebHost:.COM域名对于初创科技公司的优势
  • Java学习笔记运算符学习
  • 快速学习Python框架FastAPI
  • Moonshine - 新型开源ASR(语音识别)模型,体积小,速度快,比OpenAI Whisper快五倍 本地一键整合包下载
  • Ethernet 系列(8)-- 基础学习::ARP
  • 立体视觉的核心技术:视差计算与图像校正详解
  • mac crontab 不能使用问题简记
  • 随机采样之接受拒绝采样
  • 页面分布引导新手指引(driver.js+vue3)
  • 《化学进展》
  • 【青牛科技】D1084 5A低压差电压调整器应用方案
  • 【Zookeeper集群搭建】安装zookeeper、zookeeper集群配置、zookeeper启动与关闭、zookeeper的shell命令操作
  • CSS Grid 布局在 IE 中不兼容的原因与解决方案