我们在使用动态sql 的时候, 对于多单词连接的变量, 都必须加上别名AS,
因为 实体类中的变量与数据库对应表的变量名 不一致,
如果sql 中没有添加别名, 那么会找不到对应的字段, 则会报空指针异常.
例如:
实体类: Camera
@Setter
@Getter
@NoArgsConstructor //自动生成无参数构造函数
@AllArgsConstructor // 自动生成全参数构造函数
private String macId;
private String macType;
private Integer price;
数据库: test
表: t_camera
字段: mac_id
CREATE TABLE `t_camera` (
`id` int(11) NOT NULL COMMENT '自增id',
`mac_id` varchar(45) NOT NULL DEFAULT '' COMMENT 设备id',
`mac_type` varchar(45) NOT NULL DEFAULT '' COMMENT '设备类型',
`price` int NOT NULL DEFAULT '' COMMENT '设备价格'
)
需求: 根据macId 获取设备类型
Mapper.xml
select mac_type from t_camera where mac_id = #{macId}
会报空指针异常
修改:
select mac_type AS macType from t_camera where mac_id = #{macId}