Mybatis框架实体类字段与数据库表字段不一致导致查询该字段的值一直为null
2017-08-14 00:42
633 查看
实体类如下所示:
实体类映射的数据库表如下所示:
使用Mybatis查询配置如下所示
主要查询java代码:
查询结果:
在查询中含有表字段与对象字段不对应的,可以在查询语句用as 对象字段名解决字段不一致不自动封装的问题
方法2
修改select元素中
运行结果:
public class BasicInfo { private Integer basic_id; private String name; private String gender; private Integer age; private String address; private String email; private String phone; private String school; private String introduce; //……(此处省略setter和getter方法) }
实体类映射的数据库表如下所示:
create table `basic_info` ( `basic_id` int not null auto_increment, `name` varchar(16), `gender` varchar(4) , `age` int default '0', `address` varchar(64), `email` varchar(32), `tel` varchar(16), `school` varchar(64), `introdece` varchar(1024), `user_id` int, primary key (`basic_id`), key `fk_basicinfo_account` (`user_id`), constraint `fk_basicinfo_account` foreign key (`user_id`) references `account` (`id`) ) engine=InnoDB default charset=utf8 |
使用Mybatis查询配置如下所示
<select id="queryById" parameterType="int" resultType="BasicInfo"> select basic_id,name,gender, age,school,tel from basic_info where basic_id = #{id} </select>
主要查询java代码:
@Override public BasicInfo queryById(Integer id) { BasicInfo basicInfo = null; SqlSession session = MybatisSessionManage.getSqlSessionAutoCommit(); basicInfo = session.selectOne("basicinfo.queryById", id); return basicInfo; }
查询结果:
解决方法
方法1在查询中含有表字段与对象字段不对应的,可以在查询语句用as 对象字段名解决字段不一致不自动封装的问题
<select id="queryById" parameterType="int" resultType="BasicInfo"> select basic_id,name,gender, age,school,tel as phone from basic_info where basic_id = #{id} </select>
方法2
修改select元素中
resultType属性 为
resultMap属性并创建返回的map类型
<resultMap id="basicInfoMapper" type="BasicInfo"> <id column="basic_info" property="basic_id" /> <result column="name" property="name" /> <result column="gender" property="gender" /> <result column="age" property="age" /> <result column="address" property="address" /> <result column="email" property="email" /> <result column="tel" property="phone" /> <result column="school" property="school" /> <result column="introduce" property="introduce" /> </resultMap> <select id="queryByIdAndMapper" resultMap="basicInfoMapper" parameterType="int"> select basic_id,name,gender, age,school,tel from basic_info where basic_id = #{id} </select>
运行结果:
相关文章推荐
- mybatis框架下解决数据库中表的列的字段名和实体类属性不相同的问题
- MyBatis由浅入深学习总结之二:MyBatis解决Java实体类和数据库表字段不一致方法总结
- MyBatis学习笔记-03.MyBatis中五种成功映射数据库字段与实体类属性不一致的解决方案
- 使用Mybatis时实体类属性名和表中的字段名不一致导致结果无法映射到实体类的解决办法
- MyBatis由浅入深学习总结之二:MyBatis解决Java实体类和数据库表字段不一致方法总结
- 在Mybatis中,解决数据库字段名与java实体类属性名不一致的三种方式
- MyBatis框架解决字段名与实体类属性名不一致的情况
- mybatis框架下解决数据库中表的列的字段名和实体类属性不相同的问题
- MyBatis由浅入深学习总结之二:MyBatis解决Java实体类和数据库表字段不一致方法总结
- Mybatis高级映射之-数据库字段跟实体类名称不一致时的处理
- Mybatis实体类属性与数据库字段不一致解决办法
- mybatis callSettersOnNulls 配置,解决数据库null字段的显示
- mybatis处理查询map列表属性为null的问题,而导致查询map无该key对象
- MyBatis入门实例-包括实体类与数据库字段对应&CLOB字段处理
- MyBatis(三):数据库查询结果不为空,但是使用MyBatis框架查询为空问题
- Mybatis总结《四》实体类和数据库中的字段不对应时的处理
- Mybatis 当实体属性与数据库字段不一致时的解决方案
- ibatis框架,数据库的字段和实体类的字段映射
- Spring + Mybatis框架下,数据库更新操作时只更新set过的字段
- SSM框架搭建(三) 数据库创建和MyBatis生成器自动生成实体类、DAO接口和Mapping映射文件