MyBaits-Plus中@TableField和@TableId

一、@TableField(value = “表字段”)

如果表的字段与pojo类的属性值对应不上,就像表字段为user_name,但是属性的为uName时,在查询所有中就会报错,找不到表的字段信息。java.sql.SQLSyntaxErrorException: Unknown column ‘u_name’ in ‘field list’
就是表的字段和User类没有对应上。这里就需要加入该注解@TableField(value = “user_name”),解决字段不一致问题(value写表字段名),使得一一对应起来。

    @TableField(value = "user_name")
    private String uName;

注:但如果表字段user_name。定义的userName。驼峰命名会自动识别。不写注解也可以)
再次运行即可解决该问题 如图所示:
在这里插入图片描述

二、@TableField(select = false)

这是用来解决如果用户名密码不想显示时可以在属性上添加该字段,sql语句就不会去查询该字段。这样在查询时密码字段会变成null输出,保证安全性。

 	//查询不显示用户密码
    @TableField(select = false)
    private String userPassword;

三、@TableField(exist = false)

在添加中,如果User类下的属性数据库字段没有,再添加时还会给这个属性赋值,然后发送到mapper执行插入数据操作时就会报错。java.sql.SQLSyntaxErrorException: Unknown column ‘hobby’ in ‘field list’

Mybatis-plus忽略表中映射的字段:
Mybatis-plus使用entity和数据库进行关联映射,有时候可能有些字段,在当前表中不存在,但是操作的时候,又需要进行使用,所以有时候就需要进行忽略。
具体如何忽略如下:

  1. @TableField(exist = false):表示该属性不是表中字段,但又是必须使用的。
  2. @TableField(exist = true):表示该属性是表中字段。

执行下面的测试方法进行测试:

	//测试添加方法
    @Test
    public void testInsert(){
        User user=new User();
        user.setUserName("哈哈111");
        user.setUserEmail("12433");
        user.setUserRole("ADMIN");
        user.setUserStatus("0");
        user.setUserPassword("12344");
 
		// 表中没有字段
        user.setHobby("足球");
        //受影响的行数  count
        int count = userMapper.insert(user);
        if(count>0){//添加成功
            //输出所有数据
            testSelectList();
        }else {//添加失败
            System.out.println("添加失败~");
        }
    }

解决该方法就要使用 @TableField(exist = false)注解,表示数据表中没有该字段,添加时生成sql代码就会知道。

//数据库中没有该字段时需要添加注解
@TableField(exist = false)
private String hobby;

四、@TableId(type = IdType.AUTO)补充

这个是通过id查询时,如果不在id主键属性上添加该注解的话,就会报以下错误,org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): cn.imust.mp.mapper.UserMapper.selectById

这就表名虽然有属性和表字段也对应,但是在通过id查询时MP不知道这个是主键,所以无法执行该方法,解决方法就是在属性上添加@TableId(type = IdType.AUTO),type等于的值有很多,一般主键都是用这个。

	@TableId(type = IdType.AUTO)
    private Integer userId;

查看运行效果 如图所示:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

strggle_bin

一毛不嫌少,十元不嫌多

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

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

打赏作者

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

抵扣说明:

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

余额充值