精华内容
下载资源
问答
  • 2.1、实体字段转换数据库字段 /** * 实体字段转换数据库字段 * * @param entityField 实体字段 * @return */ public static String toDbField(String entityField) { String dbField = ""; StringBuilder...

    一、数据库字段与实体字段规则

    数据库字段命名:单词全部小写,每个单词间以_(下划线)分隔。
    实体字段命名规则:小驼峰命名法

    二、转换代码

    2.1、实体字段转换为数据库字段

    /**
     * 实体字段转换为数据库字段
     *
     * @param entityField 实体字段
     * @return
     */
    public static String toDbField(String entityField) {
        String dbField = "";
        StringBuilder sb = new StringBuilder();
        sb.append(entityField);
        //获得每个排序字段的所有字母
        char[] chars = entityField.toCharArray();
        int num = 0, index = 0;
        //循环每个单词的字母数组,如果是大写的就进行转换
        for (char aChar : chars) {
            if (Character.isUpperCase(aChar)) {
                int i1 = index + num;// 因为每次循环变更后都多了一个下划线
                sb.replace(i1, i1 + 1, "_" + String.valueOf(Character.toLowerCase(aChar)));
                num++;
            }
            index++;
        }
        dbField = sb.toString();
        return dbField;
    }
    

    2.2、数据库字段转换为实体字段

    /**
     * 将数据库字段转换为实体字段
     *
     * @param dbField
     * @return
     */
    public static String toEntityField(String dbField) {
        StringBuilder sb = new StringBuilder();
        sb.append(dbField);
        int index = 0, num = 0;
        char[] chars = dbField.toCharArray();
        for (char aChar : chars) {
            //找到_位置并且该位置不是最后一位
            if (aChar == '_' && index != chars.length - 1) {
                int i1 = index - num;
                sb.replace(i1, i1 + 2, String.valueOf(Character.toUpperCase(chars[index + 1])));
                num++;
            }
            index++;
        }
        return sb.toString();
    }
    
    展开全文
  • 分析: 在开发过程中,碰到枚举类型的字段,比如人的性别,用户的状态,订单的状态,我们往往在数据库层中使用数字 1、2等来存储数据。 在后端实体定义时,字段类型...常见的实体类中的类型String对应数据库中的varcha

    分析

    在开发过程中,碰到枚举类型的字段,比如人的性别,用户的状态,订单的状态,我们往往在数据库层中使用数字 1、2等来存储数据。

    在后端实体定义时,字段类型使用数字类型。使用这种方法,需要对前端传来的数据进行合法性校验,业务代码上比较啰嗦,所以使用枚举类来定义字段类型为更好的选择。

    但是在一个实体类中使用枚举类型,有两个问题(如下图):

    在这里插入图片描述

    1、Controller层:序列化和反序列化的问题。前端传来的参数,如何反序列化构造这个实体,即如何构造实体中的这个枚举类字段(从数字转为枚举类型)。

    2、DB层:后端使用的这个实体,如何保存到数据库中(从枚举类型转为数字),如何查询(数字转为枚举类型)。

    常见的实体类中的类型String对应数据库中的varchar,boolean–>Integer(0,1)等等。不需要你进行任何配置,就可以插入成功,是因为有Mybaits内置的TypeHandler给自动转换。

    但现在实体字段是枚举类,而数据库中是数字类型,Mybatis不认识你自定义的枚举类,不会自动转换,插入失败。

    针对这两个问题,解决方法如下(该文仅提供思路分析,具体解决点链接):

    Controller层方法

    序列化:使用@JsonValue注解,完成枚举类型转为数字类型。

    反序列化:使用@JsonCreator注解,完成数字类型转为枚举类型。

    指定通过这个方法,构造枚举类实体,不再采用默认的空参构造,set赋值。

    该方法示例:

    	@JsonCreator
    	public static GenderEnum forValue(Integer value) {
    		GenderEnum [] values = GenderEnum .values();
    		return Stream.of(values).filter(it -> it.getValue().equals(value)).findAny().orElse(null);
    	}
    

    详情:

    https://blog.csdn.net/numbbe/article/details/119110754

    DB层方法:

    entity->db:直接插入数据库中数字。

    db->entity:查出来就是 枚举类型。

    由于内置的类型转换器不能满足我们的需求,所以需要自定义类型转换器,将我们自定义的枚举类型转为对应的数值存到数据库中。

    详情:

    https://blog.csdn.net/numbbe/article/details/119110852

    展开全文
  • declare @TableName sysname = 'TableName' declare @Result varchar(max) = 'public class ' + @TableName + ' {' select @Result = @Result + ' public ' + ColumnType + NullableSign + ' ' + ColumnName + ' {...

    declare @TableName sysname = 'TableName'
    declare @Result varchar(max) = 'public class ' + @TableName + '
    {'

    select @Result = @Result + '
        public ' + ColumnType + NullableSign + ' ' + ColumnName + ' { get; set; }
    '
    from
    (
        select 
            replace(col.name, ' ', '_') ColumnName,
            column_id ColumnId,
            case typ.name 
                when 'bigint' then 'long'
                when 'binary' then 'byte[]'
                when 'bit' then 'bool'
                when 'char' then 'string'
                when 'date' then 'DateTime'
                when 'datetime' then 'DateTime'
                when 'datetime2' then 'DateTime'
                when 'datetimeoffset' then 'DateTimeOffset'
                when 'decimal' then 'decimal'
                when 'float' then 'float'
                when 'image' then 'byte[]'
                when 'int' then 'int'
                when 'money' then 'decimal'
                when 'nchar' then 'string'
                when 'ntext' then 'string'
                when 'numeric' then 'decimal'
                when 'nvarchar' then 'string'
                when 'real' then 'double'
                when 'smalldatetime' then 'DateTime'
                when 'smallint' then 'short'
                when 'smallmoney' then 'decimal'
                when 'text' then 'string'
                when 'time' then 'TimeSpan'
                when 'timestamp' then 'DateTime'
                when 'tinyint' then 'byte'
                when 'uniqueidentifier' then 'Guid'
                when 'varbinary' then 'byte[]'
                when 'varchar' then 'string'
                else 'UNKNOWN_' + typ.name
            end ColumnType,
            case 
                when col.is_nullable = 1 and typ.name in ('bigint', 'bit', 'date', 'datetime', 'datetime2', 'datetimeoffset', 'decimal', 'float', 'int', 'money', 'numeric', 'real', 'smalldatetime', 'smallint', 'smallmoney', 'time', 'tinyint', 'uniqueidentifier') 
                then '?' 
                else '' 
            end NullableSign
        from sys.columns col
            join sys.types typ on
                col.system_type_id = typ.system_type_id AND col.user_type_id = typ.user_type_id
        where object_id = object_id(@TableName)
    ) t
    order by ColumnId

    set @Result = @Result  + '
    }'

    print @Result

    展开全文
  • idea数据库生成实体

    2020-12-19 14:45:15
    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户的数据库应用系统进行性能和风险评估,参与配合进行...

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户的数据库应用系统进行性能和风险评估,参与配合进行数据压测演练,提供数据库优化方面专业建议,在业务高峰期与用户共同保障数据库系统平稳运行。","link1":"https://www.aliyun.com/service/optimization/database","link":"https://www.aliyun.com/service/chiefexpert/database","icon":"https://img.alicdn.com/tfs/TB1a5ZfonnI8KJjy0FfXXcdoVXa-100-100.png","btn2":"数据库紧急救援服务","tip":"还有更多专家帮助您解决云上业务问题:立即查看","btn1":"云上数据库优化服务","link2":"https://www.aliyun.com/service/databaserescue","title":"数据库专家服务"}],"search":[{"txt":"安全首席专家","link":"https://www.aliyun.com/service/chiefexpert/security"},{"txt":"中间件首席专家","link":"https://www.aliyun.com/service/chiefexpert/middleware"},{"txt":"系统与平台首席专家","link":"https://www.aliyun.com/service/chiefexpert/platform"},{"txt":"存储首席专家","link":"https://www.aliyun.com/service/chiefexpert/storage"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}},"simplifiedDisplay":"newEdition","newCard":[{"link":"https://www.aliyun.com/product/rds/mysql","icon":"rds_mysql1","contentLink":"https://www.aliyun.com/product/rds/mysql","title":"云数据库RDS MySQL版","des":"云数据库RDS MySQL版 MySQL 是全球最受欢迎的开源数据库,阿里云MySQL版 通过深度的内核优化和独享实例提供稳定极致的数据库性能,同时灵活的部署架构及产品形态,可满足不同场景下的数据库需求。","btn1":"了解详情","link1":"https://www.aliyun.com/product/rds/mysql","btn2":"管理控制台","link2":"https://rdsnext.console.aliyun.com/#/rdsList/cn-hangzhou/basic/","btn3":"在线咨询","link3":"https://www.aliyun.com/core/online-consult?spm=5176.8789780.7y9jhqsfz.115.47ea55caeL2Mfu&from=OVtXEBmlH8","infoGroup":[{"infoName":"最新活动","infoContent":{"firstContentName":"MySQL 1年仅19.9元","firstContentLink":"https://www.aliyun.com/database/dbfirstbuy#J_9036464270","lastContentName":"ECS+MySQL 0.7元/日","lastContentLink":"https://www.aliyun.com/1111/enterprise"}},{"infoName":"快速入门","infoContent":{"firstContentName":"选型指南","firstContentLink":"https://help.aliyun.com/document_detail/164594.html?spm=a2c4g.11186623.6.551.56b67384ispvvk","lastContentName":"上手指南","lastContentLink":"https://help.aliyun.com/document_detail/26124.html?spm=a2c4g.11174283.2.16.51795b83pbkzav"}},{"infoName":"最佳实践","infoContent":{"firstContentName":"X-Engine的应用场景","firstContentLink":"https://help.aliyun.com/document_detail/148402.html?spm=a2c4g.11186623.2.14.3f592685zjuUxu#concept-2364901","lastContentName":"读写分离功能","lastContentLink":"https://help.aliyun.com/document_detail/96073.html?spm=a2c4g.11174283.2.53.42db5b83VvZvMJ"}},{"infoName":"产品推荐","infoContent":{"firstContentName":"云数据库PolarDB","lastContentName":"云原生数据仓库MySQL","firstContentLink":"https://www.aliyun.com/product/polardb","lastContentLink":"https://www.aliyun.com/product/ads"}}]}],"visual":{"textColor":"dark","topbg":""}}

    {"$env":{"JSON":{}},"$page":{"env":"production"},"$context":{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户的数据库应用系统进行性能和风险评估,参与配合进行数据压测演练,提供数据库优化方面专业建议,在业务高峰期与用户共同保障数据库系统平稳运行。","link1":"https://www.aliyun.com/service/optimization/database","link":"https://www.aliyun.com/service/chiefexpert/database","icon":"https://img.alicdn.com/tfs/TB1a5ZfonnI8KJjy0FfXXcdoVXa-100-100.png","btn2":"数据库紧急救援服务","tip":"还有更多专家帮助您解决云上业务问题:立即查看","btn1":"云上数据库优化服务","link2":"https://www.aliyun.com/service/databaserescue","title":"数据库专家服务"}],"search":[{"txt":"安全首席专家","link":"https://www.aliyun.com/service/chiefexpert/security"},{"txt":"中间件首席专家","link":"https://www.aliyun.com/service/chiefexpert/middleware"},{"txt":"系统与平台首席专家","link":"https://www.aliyun.com/service/chiefexpert/platform"},{"txt":"存储首席专家","link":"https://www.aliyun.com/service/chiefexpert/storage"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}},"simplifiedDisplay":"newEdition","newCard":[{"link":"https://www.aliyun.com/product/rds/mysql","icon":"rds_mysql1","contentLink":"https://www.aliyun.com/product/rds/mysql","title":"云数据库RDS MySQL版","des":"云数据库RDS MySQL版 MySQL 是全球最受欢迎的开源数据库,阿里云MySQL版 通过深度的内核优化和独享实例提供稳定极致的数据库性能,同时灵活的部署架构及产品形态,可满足不同场景下的数据库需求。","btn1":"了解详情","link1":"https://www.aliyun.com/product/rds/mysql","btn2":"管理控制台","link2":"https://rdsnext.console.aliyun.com/#/rdsList/cn-hangzhou/basic/","btn3":"在线咨询","link3":"https://www.aliyun.com/core/online-consult?spm=5176.8789780.7y9jhqsfz.115.47ea55caeL2Mfu&from=OVtXEBmlH8","infoGroup":[{"infoName":"最新活动","infoContent":{"firstContentName":"MySQL 1年仅19.9元","firstContentLink":"https://www.aliyun.com/database/dbfirstbuy#J_9036464270","lastContentName":"ECS+MySQL 0.7元/日","lastContentLink":"https://www.aliyun.com/1111/enterprise"}},{"infoName":"快速入门","infoContent":{"firstContentName":"选型指南","firstContentLink":"https://help.aliyun.com/document_detail/164594.html?spm=a2c4g.11186623.6.551.56b67384ispvvk","lastContentName":"上手指南","lastContentLink":"https://help.aliyun.com/document_detail/26124.html?spm=a2c4g.11174283.2.16.51795b83pbkzav"}},{"infoName":"最佳实践","infoContent":{"firstContentName":"X-Engine的应用场景","firstContentLink":"https://help.aliyun.com/document_detail/148402.html?spm=a2c4g.11186623.2.14.3f592685zjuUxu#concept-2364901","lastContentName":"读写分离功能","lastContentLink":"https://help.aliyun.com/document_detail/96073.html?spm=a2c4g.11174283.2.53.42db5b83VvZvMJ"}},{"infoName":"产品推荐","infoContent":{"firstContentName":"云数据库PolarDB","lastContentName":"云原生数据仓库MySQL","firstContentLink":"https://www.aliyun.com/product/polardb","lastContentLink":"https://www.aliyun.com/product/ads"}}]}],"visual":{"textColor":"dark","topbg":""}}}

    展开全文
  • 数据库原理-ER模型转换关系模型

    千次阅读 2021-08-24 11:29:46
    ①若实体间联系是1:1,可以在两个实体类型转换成的两个关系模式中任意一个关系模式的属性中加入另一个关系模式的键和联系类型的属性。 若实体间联系是1:n,则在n端实体类型转换成的关系模式中加入1端实体类型的键和...
  • 快捷转换实体类操作,此代码只快捷生成C# 实体类代码 让您在繁琐的代码编写中,可以有更多的时间用来学习其他知识或者加快工作效率(有效摸鱼) SELECT CONCAT( '/// <summary>\r\n/// ', COLUMN_...
  • 一:补充知识 ...实体转换关系模式很简单。 一个实体对应一个关系模型,实体的名称即是关系模型的名称,实体的属性就是关系模型的属性, 实体的码就是关系模型的码。 实体转换时需要注意的: 1:属性域的问题。 2:
  • 需求分析阶段主要分析项目涉及的业务活动和数据的使用情况,弄清所用数据的种类、范围、数量以及在业务活动中的存储情况,确定用户对数据库系统的使用要求和各种约束条件等,形成数据库需求说明书。概念结构设计阶段...
  • 写在最前 文中的ER图均由PowerDesigner创建。 PowerDesigner的使用方法可以参考MySQL系列(九...关系模型: 例2 ER图: 关系模型: 例3 ER图: 关系模型: 例4 ER图: 关系模型: 例5 ER图: 关系模型: ...
  • Install-Package Pomelo.EntityFrameworkCore.MySql 把Mysql数据库转为C#实体的命令 scaffold-dbcontext -provider Pomelo.EntityFrameworkCore.MySql -connection "Server=xxx.xxx.com;port=58892;Database=...
  • 设某商业集团数据库中有三个实体集。一是“商店”实体集,属性有商店编号、商店名、地址等;二是“商品”实体集,属性有商品号、商品名、规格、单价等;三是“职工”实体集,属性有职工编号、姓名、性别、业绩等。...
  • 数据库的设计通常需要经历四个部分:需求收集与分析(Requirements Collection and Analysis)概念设计(Conceptual Design) —— 设计实体关系模型 (ER Model)逻辑设计(Logical Design)—— 实现从 ER 模型到关系模式...
  • 数据库系统原理------ER图转化成关系模式

    千次阅读 多人点赞 2021-03-06 17:45:39
    弱实体集向关系模式的转换 应用实例 E-R图转换 ​ E-R图是由实体实体的属性和实体之间的联系三个要素组成的。将E-R图转换关系模型实际上就是要将实体实体的属性和实体之间的联系转化为关系模式 。 ...
  • 一、概述很可能你现在正在规划一个...对于Web应用来说,关系数据库是一种强大的支持工具,这得感谢它们的高可用性、性能,而且相对来说,关系数据库比较容易使用。要找出一个功能完善、源代码开放、能够在多种平台上...
  • 数据库中抽取出来的字段,写入到excel文件里:java使用poi把从数据库中取出的数据写入excel最近实现了一个相反的功能,前台传一个excel文件,在后台解析该excel文件的数据,转换为javaBean后存入到数据库中,...
  • 项目中的需求:导出功能,且有些字段是需要通过数据库存储的数据字典来进行翻译转换。比如:企业类型,1=生产企业,2=配送企业,3=经营企业,等等。这些映射关系虽然变化频率很低,但也是动态存储在数据库中的。我们...
  • 一个实体转换为一个关系模式,关系的属性就是实体的属性,关系的码就是实体的码。 三.对于实体型间的联系有以下不同的情况: 1.一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。但...
  • 个人重构版机房收费系统中需要自己重新设计数据库,那么如何设计数据库呢?这也是咱们自考中一门重要的课程《数据库原理》,对于考过这科的同学想必已经从中受益,直接就可以学以致用。我是今年10月份考这本书,所以...
  • 关系模式的个数=实体集的个数+多对多联系的个数 (1)一对一联系(1 ∶1) 对于两个实体集A和B,若A中的每一个值在B中至多有一个实体值与之对应,反之亦然,则称实体集A和B具有一对一的联系。 例如,一个学校只有一个正...
  • (1)设计关系模式:掌握给定一个实际的应用问题如何设计E-R模型,如何将E-R模型转换成关 系模式,确定联系类型、主键、候选键、外键,判断关系模式规范化的程度。 (2)数据库语言(SQL):掌握给定一个实际的应用...
  • private static final String WORDS_RESULT = "words_result"; String json = InvoiceOCR.vatInvoice(readBytes); JSONObject object = JSONObject.parseObject(json); //json字符串下面的字段全部在WORDS_RESULT...
  • 文章目录关系数据库关系操作基本关系操作关系数据库语言的分类关系模型的完整性实体完整性(Entity Integrity)参照完整性(Referential Integrity)用户定义完整性(User-defined Integrity)E-R图向关系模型的转换...
  • 1、将下列物资管理E-R图转换关系模式:转换原则⒈ 一个实体转换为一个关系模式。关系的属性:实体型的属性关系的码:实体型的码⒉ 一个m:n联系转换为一个关系模式(初步,以后可能调整)。关系的属性:与该联系...
  • 阅读目录redis是什么redis就是一个存储key-value键值对的仓库,如何使用redis在于如何理解你需要设计的系统的E-R的模型,然后合理的规划redis的数据库结构场景我举一个简单的消息系统的例子,业务需求:服务器端发送...
  • 关系数据库

    2021-03-06 12:18:41
    关系数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个...
  • 数据库sql.date 和 实体类的Util.date的转换方式
  • 数据库的逻辑设计主要是将概念模型转换成一般的关系模式,也就是将实体-联系图中的实体实体的属性和实体之间的联系转化为关系模式。在转化过程中会遇到如下问题: (1)命名问题。命名问题可以采用原名,也可以另行...
  • import com.intellij.database.model.DasTableimport com.intellij.database.model.ObjectKindimport com.intellij.database.util.Caseimport com.intellij.database.util.DasUtilimport java.io.*import java.text....
  • 展开全部首先有几点声明:1、代码是在别人的基础进行改写的;2、大家32313133353236313431303231363533e59b9ee7ad9431333363393066有...//这个是做转换的类,里面的DB只是封装了数据库的连接,大家可以用自己的,随...
  • https://www.bejson.com/devtools/sql2pojo/ Mark一下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 153,986
精华内容 61,594
关键字:

数据库弱实体转换关系