mybatis中使用 datamap作为返回数据容器,当数据起了别名的情况下,数据为别名的大小写状态,当数据不起别名的情况下,数据有大写也有小写。
比如如下的sql:
select
a.status,
a.state,
b.org_id,
b.org_name,
ifnull(b.economic_type,'暂无') economic_Type,
ifnull(b.org_address,'暂无') org_address,
ifnull(b.business_scope,'暂无') business_scope,
ifnull(substr(b.REG_DATE,1,7),'暂无') reg_date,
b.CORPORATE,
round(b.REG_CAPITAL,0) REG_CAPITAL,
ifnull(b.truescore, 0) score,
ifnull(b.ENTER_STATE,'暂无') ENTER_STATE,
b.ORG_ADDRESS,
b.org_contact
from tb_risk_attention_org a left join view_ts_organ_gz b on a.attention_org_id = b.org_id
where a.user_id = #{userId} and a.state = '1' and b.org_name like concat('%',concat(#{companyName},'%')) limit #{pageStart},#{pageSize}
前台查询出来的结果:
1.status sql小写,前台结果小写
2.org_name sql小写 前台结果 大写
3.economic_Type 起了别名,前台和sql中的别名一致
这是什么原因呢?
:数据库问题。
mysql数据库,默认的排序规则大小写是不敏感的。
mybatis中写的小写,可能数据库中的字段是大写的。如此,前台获取到的字段就是大写。比如:org_name
数据表中的 org_name是大写的
前台返回的就是数据库中的大写。
而 status数据库中是小写的
前台返回的就是数据库中的小写
这就说明,mybatis中字段的大小写不重要,重要的是数据库中的字段的大小写。一方面,我们应该规范数据库设计,统一字段大小写,如果数据来源比较复杂,统一不了大小写,那么查询出来的字段,应该尽量全部进行起别名操作,实现字段的大小写格式统一。
baymin。