问题信息:
如果表名是数据库关键字怎么办?

正常来说,如果是我们自己写sql的话,给表名加反引号即可解决问题。

但是由于我们使用MyBatisPlus,相关的sql基本上都是封装并自动生成的。如果是这种场景,我们就需要修改对应的实体,举例说明,如下代码:

import com.baomidou.mybatisplus.enums.IdType;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.activerecord.Model;
import java.io.Serializable; public class Group extends Model<Group> { private static final long serialVersionUID = 1L; /**
* 组ID
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 组名
*/
private String name; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Override
protected Serializable pkVal() {
return this.id;
} @Override
public String toString() {
return "Group{" +
"id=" + id +
", name=" + name +
"}";
}
}

用上述代码的自动生成肯定会有问题,以单条数据查询为例,默认是 select id,name from group where id = 1,又因为group属于关键字,接下来会出现如下错误信息:

### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group WHERE id=1' at line
; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group WHERE id=1' at line ] with root cause com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group WHERE id=1' at line

这种错误信息,很容易识别,一看就是sql写的有问题。但实际上sql并没有问题,只不过是因为关键字冲突导致sql错误。

那么如何解决这个问题呢?
答案是只需加一个@TableName注解即可解决该问题。修改后的实体代码如下:

import com.baomidou.mybatisplus.enums.IdType;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.activerecord.Model;
import java.io.Serializable; @TableName("`group`")
public class Group extends Model<Group> { private static final long serialVersionUID = 1L; /**
* 组ID
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 组名
*/
private String name; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Override
protected Serializable pkVal() {
return this.id;
} @Override
public String toString() {
return "Group{" +
"id=" + id +
", name=" + name +
"}";
}
}

最新文章

  1. IDEA tomcat乱码
  2. 自定义一个可复用的BaseAdapter
  3. gulp插件(gulp-jmbuild),用于WEB前端构建
  4. unity3d 三分钟实现简单的赛车漂移
  5. no-jquery 01Elements
  6. MapReduce 2简介
  7. java实例--海盗的最优方案
  8. mac安装IE浏览器
  9. CentOS用户权限管理--su与sudo
  10. bootstrap 框架选型过程
  11. __init和__exit宏的作用
  12. PHP框架_Smarty
  13. (转)Java字符串应用之密码加密与验证
  14. 每日java基础知识(01)
  15. jquery append 动态添加的元素绑定事件on
  16. HA集群heartbeat配置--Nginx
  17. 深入理解Java设计模式之观察者模式
  18. (二叉树 递归) leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal
  19. P2947 [USACO09MAR]向右看齐Look Up--单调栈
  20. Css - 浮动布局

热门文章

  1. 第一阶段:Java基础 1.JAVA开发介绍---5. Java的注释,标识符、标识符的命名规范
  2. 用jQuery的offset()替代javascript的offset
  3. excel 宏循环行数据 ,Excel统计所有sheet数据行数 VBA
  4. python高级编程之 web静态服务器
  5. linux 如何修改默认的FTP帐号或密码
  6. react 爬坑记录
  7. Samba + DLAN 实现电视机播放电脑文件
  8. SAP技术 - How to create a CDS redirect view for a given database table
  9. Docker08-网络管理
  10. 关于TCP/IP