Mybatis 自定义结果映射2019-05-12
2019-06-14 本文已影响0人
琴匣自鸣
解决, user表 类型字段 lx 为int关联 账号类型表zhlx 具体值例如 lx=1 关联表里代表管理员,当查询时如何将查询结果获取为DiaplayValue
方案一
在user类里加入一个lxname属性,但user表里没有,当查询时执行如下sql语句,返回值依然为user,则lxname中自然就有了对应的值,
select u.*,z.name as lxname from user as u,zhlx as z where u.lx=z.id
方案二
注意此方式写属性时写需要的属性即可无需全部写,这种方式也需要在类里多写一个属性,否则类里没有该属性无get set无法获取,比第一种好的是可以字段名和类属性名不一致

resultMap 有一个自动映射功能,(autoMappingBehavior)此功能默认开启,即使在resultMap标签内没有映射也会自动映射但前提是 类属性名==数据库字段名,同时使用符合条件的属性而生成的属性也可以自动映射例如如下,age本身数据库无此字段,但在类内由birthday计算得到,birthday属性名==字段名此时也会自动映射获取birthday,因此 getAge()执行时是可以获得值得

此功能可以在核心配置文件关闭 <setting name="autoMappingBehavior" value="NONE"> ,注意如果关闭birthday获取不到此时由于age是由birthday生成的所以getAge()会出现空指针异常