posts - 206,  comments - 26,  views - 17万
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

  

  一、字段映射与表名映射


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

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

 

 

解决办法:

在模型类上方,使用@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);
 
 
    }
 
}
复制代码

 

 

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

posted on   努力--坚持  阅读(21)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示