实体类驼峰命名导致查询出现null
出现的问题:
运行测试类的时候,brandName,companyName出现null值
原因:数据库表的字段名 和 实体类的属性名称 不一样,则不能自动封装数据
navicat命名方式:
实体类代码:
private String brandName; private String companyName;
select查询语句代码:
<select id="selectAll" resultType="com.Ye.pojo.Brand"> select *from tb_brand; </select>
解决方法:
方法一:
* 起别名:对不一样的列名起别名,让别名和实体类属性名一样
<select id="selectAll" resultType="com.Ye.pojo.Brand"> select id, brand_name as brandName, company_name as companyName, ordered, description, status from tb_brand; </select>
Ps.不灵活,需要手动输入各种类名和别名,每次查询都需要定义别名
Ps.解决方法:使用sql片段,但是还是不灵活
<!-- **sql片段 --> <sql id="brand_colum"> id, brand_name as brandName, company_name as companyName, ordered, description, status </sql> <select id="selectAll" resultType="com.Ye.pojo.Brand"> select <include refid="brand_colum"></include> from tb_brand; </select>
方法二:
<!-- **数据库表的字段名 和 实体类的属性名称 不一样,则不能自动封装数据 * 起别名:对不一样的列名起别名,让别名和实体类属性名一样 *每次查询都需要定义别名 使用sql片段语句 但是还是不灵活 * resultMap: 映射 1.定义<resultMap>标签 2.在<select>标签,使用resultMap属性替换 resultType属性 --> <!-- id是唯一标识 type:是映射类型,支持别名 --> <resultMap id="brandResultMap" type="brand"> <!-- id:完成主键字段的映射 column="" //表的列名 property="" //属性名 result:完成一般字段的映射 column="" //表的列名 property="" //属性名 --> <result column="brand_name" property="brandName"/> <result column="company_name" property="companyName"/> </resultMap> <select id="selectAll" resultMap="brandResultMap"> select * from tb_brand; </select>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?