像素时代网站建设手机站设计wordpress的.htaccess
news/
2025/9/23 10:22:37/
文章来源:
像素时代网站建设手机站设计,wordpress的.htaccess,女装网站功能的建设,微信企业号网站开发软件目录
自动映射
表映射
字段映射
字段失效
视图属性 Mybatis框架之所以能够简化数据库操作#xff0c;是因为他内部的映射机制#xff0c;通过自动映射#xff0c;进行数据的封装#xff0c;我们只要符合映射规则#xff0c;就可以快速高效的完成SQL操作的实现。既然…
目录
自动映射
表映射
字段映射
字段失效
视图属性 Mybatis框架之所以能够简化数据库操作是因为他内部的映射机制通过自动映射进行数据的封装我们只要符合映射规则就可以快速高效的完成SQL操作的实现。既然MybatisPlus是基于Mybatis的增强工具所以也具有这样的映射规则。
我们先来了解一下自动映射规则。
自动映射
【1】表名和实体类名映射 - 表名user 实体类名User【2】字段名和实体类属性名映射 - 字段名name 实体类属性名name【3】字段名下划线命名方式和实体类属性小驼峰命名方式映射 - 字段名 user_email 实体类属性名 userEmail
MybatisPlus支持这种映射规则可以通过配置来设置
map-underscore-to-camel-case: true 表示支持下划线到驼峰的映射
map-underscore-to-camel-case: false 表示不支持下划线到驼峰的映射可以在application.yml文件中进行配置
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: true表映射
通过TableName()注解指定映射的数据库表名就会按照指定的表名进行映射如此时将数据库的表名改为study_user,要完成表名和实体类名的映射需要将实体类名也要指定为study_user
Data
AllArgsConstructor
NoArgsConstructor
TableName(study_user)
public class User {private Long id;private String name;private Integer age;private String email;
}果有很多实体类对应到数据库中的很多表我们不需要每个依次配置只需要配置一个全局的设置他都会给每个实体类名前面添加指定的前缀这里我们演示一下在application.yml全局配置的效果
mybatis-plus:global-config:db-config:table-prefix: study_表名的前缀为study_ 字段映射
什么场景下会改变字段映射呢
【1】当数据库字段和表实体类的属性不一致时我们可以使用TableField()注解改变字段和属性的映射让注解中的名称和表字段保持一致 如此时将数据库字段的名称我们改为username在根据实体类的属性拼接SQL的使用就会使用TableField()中指定的名称username进行拼接完成查询
Data
AllArgsConstructor
NoArgsConstructor
public class User {TableField(username)private String name;}此时的SQL语句是这样的
SELECT id,username AS name,email FROM study_user 【2】数据库字段和表实体类的属性一致框架在拼接SQL语句的时候会使用属性名称直接拼接sql语句例如
SELECT id,username AS name,age,email,desc FROM study_user
这条语句直接进行查询的时候会出现错误 Error querying database. Cause: java.sql.SQLSyntaxErrorException: 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 desc FROM study_user at line 1 原因是desc属于关键字不能直接用于sql查询要解决这个问题就需要将desc字段加上符号将他变为不是关键字才能完成查询那这个问题的根本也是改变生成的SQL语句的字段名称也就是我们需要通过TableField()改变实体类的属性名称将desc变为desc,就可以解决这个问题
Data
AllArgsConstructor
NoArgsConstructor
public class User {TableField(desc)private String desc;
}字段失效
当数据库中有字段不希望被查询我们可以通过TableField(select false)来隐藏这个字段那在拼接SQL语句的时候就不会拼接这个字段
如如果不想显示年龄信息那么可以在age属性上添加这个注解来隐藏这个字段
Data
AllArgsConstructor
NoArgsConstructor
public class User {TableField(select false)private Integer age;
}生成的SQL语句如下通过查询生成的SQL语句发现并没有拼接age字段 视图属性 在实际开发中有些字段不需要数据库存储但是却需要展示需要展示也就是意味着实体类中需要存在这个字段我们称这些实体类中存在但是数据库中不存在的字段叫做视图字段。 根据之前的经验框架会默认将实体类中的属性作为查询字段进行拼接那我们来思考像这种视图字段能够作为查询条件么显示是不能的。因为数据库中没有这个字段所以查询字段如果包含这个字段SQL语句会出现问题。我们通过TableField(exist false)来去掉这个字段不让他作为查询字段。
Data
AllArgsConstructor
NoArgsConstructor
public class User {TableField(exist false)private Integer online;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/912197.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!