数据库列名与实体类属性名不一致解决方案

1.数据库列名与实体类的映射

        ORM的映射主要分为两个过程:如将jdbcType和javaType按照不同db进行映射,然后将propertyName和columnName按照一定规则进行映射。对于前者来说,Mybatis主要是通过TypeHandlerRegistry里面的Map来完成映射的;对于后者来说,主要是通过ResultSetHandler来完成的。

2.名称问题

假如名称一致当然很多问题都迎刃而解,但是有很多特殊情况但你的实体类名称与数据库列名不一致但又无法更改的时候可以有很多解决方案。

1.通过修改sql语句起别名的方式


假如实体类的属性名是pass,数据库列名为password,执行下列sql语句pass=null


<select id="findAll" resultType="pojo.User">
   select id,name,pass from ljqdb.user
</select>

修改sql语句起别名的方式为将sql语句修改为

<select id="findAll" resultType="pojo.User">
   select id,name,pass as password from ljqdb.user
</select>

2.用ResultMap映射结果集

用ResultMap映射

    <resultMap id="UserMap" type="pojo.User">
        <result property="pass" column="password" />
    </resultMap>
    
    <select id="findAll" resultMap="UserMap">
        select * from ljqdb.user
    </select>
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
{ 项目称 } 数据库设计报告 "文件状态: "文件标识:"Company-Project-SD-DATABASE " "[ ] 草稿 " " " "[ ] 正式发布 " " " "[ ] 正在修改 " " " " "当前版本:"X.Y " " "作 者:" " " "完成日期:"Year-Month-Day " 版 本 历 史 "版本/状态 "作者 "参与者 "起止日期 "备注 " " " " " " " " " " " " " " " " " " " 目 录 0. 文档介绍 4 0.1 文档目的 4 0.2 文档范围 4 0.3 读者对象 4 0.4 参考文献 4 0.5 术语与缩写解释 4 1. 数据库环境说明 5 2. 数据库的命规则 5 3. 逻辑设计 5 4. 物理设计 5 4.0 表汇总 5 4.1 表A 6 4.n 表N 6 5. 安全性设计 6 5.1 防止用户直接操作数据库的方法 6 5.2 用户帐号密码的加密方法 6 5.3 角色与权限 7 6. 优化 7 7. 数据库管理与维护说明 7 0. 文档介绍 0.1 文档目的 0.2 文档范围 0.3 读者对象 0.4 参考文献 提示:列出本文档的所有参考文献(可以是非正式出版物),格式如下: [标识符] 作者,文献称,出版单位(或归属单位),日期 例如: [AAA] 作者,《立项建议书》,机构称,日期 [SPP-PROC-SD] SEPG,系统设计规范,机构称,日期 0.5 术语与缩写解释 "缩写、术语 "解 释 " "SPP "精简并行过程,Simplified Parallel Process " "SD "系统设计,System Design " " " " " " " "… " " 1. 数据库环境说明 提示: (1)说明所采用的数据库系统,设计工具,编程工具等 (2)详细配置 2. 数据库的命规则 提示: (1)完整并且清楚的说明本数据库的命规则。 (2)如果本数据库的命规则与机构的标准不完全一致的话,请作出解释。 3. 逻辑设计 提示:数据库设计人员根据需求文档,创建与数据库相关的那部分实体关系图(ERD)。 如果采用面向对象方法(OOAD),这里实体相当于类(class)。 4. 物理设计 提示: (1)主要是设计表结构。一般地,实体对应于表,实体的属性对应于表的列,实体之间 的关系成为表的约束。逻辑设计中的实体大部分可以转换成物理设计中的表,但是它们 并不一定是一一对应的。 (2)对表结构进行规范化处理(第三范式)。 4.0 表汇总 "表 "功能说明 " "表A " " "表B " " "表C " " 4.1 表A "表 " " "列名 "数据类型(精度范围"空/非空 "约束条件 " " ") " " " " " " " " " " " " " " " " " " "补充说明 " " 4.n 表N "表 " " "列名 "数据类型(精度范围"空/非空 "约束条件 " " ") " " " " " " " " " " " " " " " " " " "补充说明 " " 5. 安全性设计 提示:提高软件系统的安全性应当从"管理"和"设计"两方面着手。这里仅考虑数据库的 安全性设计。 5.1 防止用户直接操作数据库的方法 提示:用户只能用帐号登陆到应用软件,通过应用软件访问数据库,而没有其他途径操 作数据库。 5.2 用户帐号密码的加密方法 提示:对用户帐号的密码进行加密处理,确保在任何地方都不会出现密码的明文。 5.3 角色与权限 提示:确定每个角色对数据库表的操作权限,如创建、检索、更新、删除等。每个角色 拥有刚好能够完成任务的权限,不多也不少。在应用时再为用户分配角色,则每个用户 的权限等于他所兼角色的权限之和。 "角色 "可以访问的表与列 "操作权限 " " " " " "角色A " " " " " " " " " " " " " " " "角色B " " " " " " " " " " " 6. 优化 提示:分析并优化数据库的"时-空"效率,尽可能地"提高处理速度"并且"降低数据占用 空间"。 (1)分析"时-空"效率的瓶颈,找出优化对象(目标),并确定优先级。 (2)当优化对象(目标)之间存在对抗时,给出折衷方案。 (3)给出优化的具体措施,例如优化数据库环境参数,对表格进行反规范化处理等。 "优先级 "优化对象(目标) "措施 " " " " " " " " " " " " " 7. 数据库管理与维护说明 提示:在设计数据库的时候,及时给出管理与维护本数据库的方法,有助于将来撰写出 正确完备的用户手册。 ----------------------- 机构图标 软件项目数据库设计报告全文共7页,当前为第1页。 C
PowerDesigner设计数据库使用步骤及规范 使用PowerDesigner可以方便地对管理信息系统进行分析设计,它几乎包括了数据库模型设计的全过程。它可以制作多种数据模型,也能对团队设计模型进行控制。还可以与许多流行的软件开发工具,例如PowerBuilder、Delphi、VB等相配合使系统设计更优化并缩短开发时间。 并不是每个设计都需要用到PD,对于比较大型的项目,它是很好的,对于短平快类型的项目,例如时间要求一周左右的系统,没有必要使用,直接维护数据库即可,对于表的数量超过10个的系统,建议使用PD进行设计和交流。 创建概念数据模型(CDM) 1.1 创建CDM步骤 选择 文件建立新模型,弹出如图所示对话框,选择ConceptualDataModel模型(即概念数据模型),单击OK,即确认创建。 PowerDesigner设计数据库使用规范全文共15页,当前为第1页。双击资源浏览窗口中新创建的CDM 称图标,打开CDM 模型属性窗口,进行相关属性信息设置。如下图: PowerDesigner设计数据库使用规范全文共15页,当前为第1页。 1.2 对象命通用规范 以下三种规范属于基本规范,适用于本文所有数据库对象命规范。 1、长度规范:凡是需要命的对象其标识符均不能超过3个英文单词长度(30个字符),也即:Oracle中的表、字段,函数,过程,触发器,序列名,视图的长度均不能超过3个英文单词长度(30个字符); 2、构成规范:数据库各种称必须以字母开头,但严禁使用SYS开头;称只能含有字母,数字和下划线"_"三类字符,"_"用于间隔称中的各语义字段;不要使用DUAL作表; 3、大小写规范: 构成Oracle数据库中的各种称(表明,字段,过程,视图等等)的所有字符,必须使用大写,也就是不能在脚本中,对任何称添加双引号""来设定字符的大小写形式,只要不采用""限制,Oracle自动会将各称转化成大写。 PowerDesigner设计数据库使用规范全文共15页,当前为第2页。 PowerDesigner设计数据库使用规范全文共15页,当前为第2页。 进行ER设计的准备工作 2.1 实体命不相同检查 PowerDesigner 默认不能存在相同称的实体属性,这也是考虑到可能产生的一些如主键外键等称冲突问题,但当进行实际数据库设计时,可能会多次使用相同数据项(DataItem)便于理解各实体。为此需要对更改PowerDesigner 相关设置。软件默认DataItem不能重复使用,需要进行以下操作: 选择工具Model Options,在 Model Setting 设置目录中,将Data Item下的Unique Code取消选中即可,系统默认将Unique Code和Allow Reuse均选中。 PowerDesigner设计数据库使用规范全文共15页,当前为第3页。同时该设置均是面向特定模型的,即针对当前模型有效,若希望在其它模型中也有此命设置,则需要重新进行设置。不过在Check Model 时,如果选择全部Check,则依旧会报DataItem 重的错误信息,这时需要我们在人为检查确认数据项无误时,可以在选择不对DataItem 不检查,如下图示: PowerDesigner设计数据库使用规范全文共15页,当前为第3页。 PowerDesigner设计数据库使用规范全文共15页,当前为第4页。 PowerDesigner设计数据库使用规范全文共15页,当前为第4页。 定义实体 3.1 创建entity 3.1.1 创建entity步骤 1、在CDM的图形窗口中,单击工具选项版上的Entity工具,再单击图形窗口的空白处,在单击的位置就出现一个实体符号。点击Pointer工具或右击鼠标,释放Entity工具。如图所示: 2、双击刚创建的实体符号,打开下列图标窗口,在此窗口"General"标签中可以输入实体的称、代码、描述等信息。 PowerDesigner设计数据库使用规范全文共15页,当前为第5页。 PowerDesigner设计数据库使用规范全文共15页,当前为第5页。 Name:是用来在模型中标识一个实体,一般用于模型在界面中的显示(这个可以通过更改选项设置进行改变)。在一个模型当中,实体的名字不能重复。 Code:在模型转化时一般作为对象的物理称,比如把实体属性的Code转化为数据库中的列名,一般采取与Name一致。 Generate:默认是选择状态,如果取消,则在转化为其他模型时,会忽略这个实体。 3.1.2 entity命规范 CDM中的实体等价于PDM中的表。 1、表的命只能使用英文字母,数字和下划线。 2、命以是词的复数形式,如cit

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

LeeGaKi

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值