首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

实体类变形】—— 元数据(另类ORM) 描述字段的数据

2、一般的实体类是把字段作为属性来处理的(为了少写代码,就需要使用反射),这样字段变化了就需要修改实体类,这就带来了很多的修改。           ...而另类实体类是把字段信息作为属性值来处理的,这样字段变化了只需要属性值就可以了,而属性值又是由XML文件里面提取的,所以只需要修改XML文件就可以了,不用修改实体类。...不修改实体类,与之相关的很多地方都不用修改代码了。这样当字段变化,基本上只改一条配置信息就可以了。      ...3、一般的实体类携带的信息有限,只有字段名和字段值,而要获取字段名还需要一个“潜规则”那就是要用字段名来命名属性名,然后再用反射的方式来获得,兜了一个大圈子。...而另类的实体类采用属性值的方式来存放各种信息,这样可以用增加属性的方式来存放更多的信息,比如ColumnsInfoBase  类里面的属性就可以分别存放字段名称、字段类型、字段大小和字段值。

711100
您找到你想要的搜索结果了吗?
是的
没有找到

NewLife.XCode中如何借助分部抽象多个具有很多共同字段实体类

背景: 两个实体类:租房图片、售房图片 这两个表用于存储房源图片记录,一个房源对应多个图片,两个表的差别就在于一个业务关联字段。...因为两个实体类的操作极为相似,我们可以提取出来一个接口,进行统一操作。这里只有两个实体类,可能优势不明显,但如果有八个十个呢?...由于XCode是充血模型,我们可以为这两个实体类做一个统一的基类来达到我的目的,但是这个统一的基类里面无法访问子类的字段,编码上很不方便。 这一次,我们用分部接口!...先来看看这两个实体类 image.png image.png 这两个实体类,就RentID和SaleID字段的不同,其它都一样,包括名字、类型、业务意义。...我们来扩展一下,增加一个BizID属性来统一它们,因为两个实体类都没有这个属性的实现,所以我们需要在实体类业务文件那里手工增加实现。 image.png image.png 大功告成!

2.1K60

mybatis和mybatisPlus中解决实体类字段与数据库关键字冲突问题

写在前面   由于数据库表字段名称设计不合理,导致与MySQL数据库关键字或者预留关键字一致,在这种情况下,将会导致数据插入不成功,这里主要针对Mybatis和MybatisPlus提出对应的解决方案...一、Mybatis中解决方案 1、针对XML文件,可以在冲突的字段名添加 ` ` ( 反单引号在 键盘Esc键下面的那个,注意切换英文输入法 ) 引起来,如下所示: <insert id="addParam...#{item.createTime}, #{item.remark} ) 2、如果不想修改xml文件,也可针对<em>实体类</em>进行修改...二、MybatisPlus解决方案 对于MybatisPlus解决就很简单了,直接在<em>实体类</em>上添加  @TableField 注解,给上别名加上反单引号即可。

2.4K50

MYSQL 生产环境字段更改的failed的问题

早上看到微信一个银行的同学问了小问题,希望他不要背锅,具体问题是MYSQL 一个50G的表要更改字段,将一个字段从varchar(3) 改成varchar(6). MYSQL 5.7 官版。...所以我们要理解一个事情首先要站在一个起跑线上,上面的东西都是官方文档,并且在测试环境上测试基本上没有太大问题。...,那个表有几个索引,这个字段有没有索引,等等。...也注定 DB的工作,是一件需要小心小心小心的工作,因为生产环境一定有你不清楚的环境,而这些可能不清楚的环境,就会让某次“信心满满”的Action Failed....注:到目前为止MYSQL 在修改字段方面,对比其他数据库还是要注意的地方多多,当然MYSQL 8 已经添加了 instant 让修改字段变得更让人放心。

1.8K30

MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突

在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体类属性名不相同的冲突。...-- 18 根据id查询得到一个order对象,使用这个查询是可以正常查询到我们想要的结果的, 19 这是因为我们将查询的字段名都起一个和实体类属性名相同的别名,这样实体类的属性名和查询结果中的字段名就可以一一对应上...四、总结 上面的测试代码演示当实体类中的属性名和表中的字段名不一致时,使用MyBatis进行查询操作时无法查询出相应的结果的问题以及针对问题采用的两种办法: 解决办法一: 通过在查询的sql语句中定义字段名的别名...,让字段名的别名和实体类的属性名一致,这样就可以表的字段名和实体类的属性名一一对应上了,这种方式是通过在sql语句中定义别名来解决字段名和属性名的映射关系的。...解决办法二: 通过来映射字段名和实体类属性名的一一对应关系。这种方式是使用MyBatis提供的解决方式来解决字段名和属性名的映射关系的。

1K140

MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突

MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突   在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体类属性名不相同的冲突...-- 18 根据id查询得到一个order对象,使用这个查询是可以正常查询到我们想要的结果的, 19 这是因为我们将查询的字段名都起一个和实体类属性名相同的别名,这样实体类的属性名和查询结果中的字段名就可以一一对应上...四、总结   上面的测试代码演示当实体类中的属性名和表中的字段名不一致时,使用MyBatis进行查询操作时无法查询出相应的结果的问题以及针对问题采用的两种办法:   解决办法一: 通过在查询的sql语句中定义字段名的别名...,让字段名的别名和实体类的属性名一致,这样就可以表的字段名和实体类的属性名一一对应上了,这种方式是通过在sql语句中定义别名来解决字段名和属性名的映射关系的。   ...解决办法二: 通过来映射字段名和实体类属性名的一一对应关系。这种方式是使用MyBatis提供的解决方式来解决字段名和属性名的映射关系的。

57010

利用Mybatis拦截器,全局处理入库字段

利用Mybatis拦截器,全局处理入库字段 场景 需要对某张表的个别字段删除全部空格、替换半角括号,但是项目里入口比较多,不止有前端录入,还有接口接收的数据。...实现 EnableCustomInterceptor 标识实体类入库时会使用自定义拦截器(mybatis) @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME...) @Documented public @interface EnableCustomInterceptor { } DeleteWhitespace 标识字段,入库时会去除首尾空格 生效条件 实体类需要使用注解...{@link EnableCustomInterceptor}; Mapper方法的参数必须包含实体类对象(可嵌套到集合中) 通过mybatis拦截器实现{@link DeleteWhitespaceFieldInterceptor...,入库时会替换半角括号为全角 生效条件 实体类需要使用注解{@link EnableCustomInterceptor}; Mapper方法的参数必须包含实体类对象(可嵌套到集合中) 通过mybatis

47930

如何将生产环境字段类型从INT修改为BIGINT

一旦强行修改字段必然导致停机。 本文描述了我如何计划和执行从INT到BIGINT数据类型的更改。...评估可选方案 最为直接的方式就是修改表字段类型。但是相应的停机时间就会很长,ID列是聚集索引,因此修改前还必须删除索引键。问题一下子就浮出水面了。 如果用这种方式修改,推测会引起至少好几个小时的停机。...这是我的后来选择的方案,但是最近有找到一个比较好的方案,我创建了一个副本表在独立的开发环境的实例上。使用SSIS来保证数据同步。然后使用对象级别的还原,将新表切换到生产环境。...注意:为了模仿生产环境,在另一个实例的数据库中创建新表。...建议:开发环境中可以把表进行压缩这样会小很多。 万事俱备,旦所有对象都被重命名,您可以删除触发器以重新打开表。 部署到生产环境 在我看来,方法奏效了。

4.9K80
领券