java - spring boot 集成mybatis 注解版查询
问题描述
-spring boot 集成 mybatis 使用注解实现 spring boot 和 mybatis已经正常集成,在使用查询时使用的是注解,(项目没有任何XML文件)
@Mapper@Table(name = 't_user')public interface UserMapper { @Select('select * from t_user where user_id = #{id}') public User findUserById(@Param('id') String id);}
这种方式是不知道为什么,只有几个属性会填充值,其他属性查询出来的结果都为null 
但是我如果写了
@Results({ @Result(column = 'user_id',property = 'userId'), @Result(column = 'username',property = 'username'), @Result(column = 'pass',property = 'pass'), @Result(column = 'phone_number',property = 'phoneNumber')})
就会完全正确,每个属性都有值问题1: 为什么会出现有的属性有值,有的属性没值?问题2:我不能每个查询语句都这么写,这样会有很多的重复的@Result部分,有没有注解将其在内部进行对应关系实现,不需要每次都写@ Result?
问题解答
回答1:问题1. 因为结果集的column和Bean的property不对应,当然就会null.
问题2. 你可以在sql中用别名,使得column和property对应,这样就不会出现问题1.
回答2:问题一的话,因为数据库字段是你下划线分隔,bean中的字段是驼峰命名的,如user_name和userName,导致无法匹配
如果是通过xml文件来配置的话,只需要开启驼峰命名转换
<setting name='mapUnderscoreToCamelCase' value='true'/>
yml中 大概是这样
mybatis: configuration: map-underscore-to-camel-case: true
相关文章:
1. javascript - 有什么兼容性比较好的办法来判断浏览器窗口的类型?2. android-studio - android app微信登录一定要申请了登录权限才能测试?3. javascript - JS 里面的 delete object.key 到底删除了什么?4. javascript - log4js的使用问题5. mysql新建字段时 timestamp NOT NULL DEFAULT ’0000-00-00 00:00:00’ 报错6. css - autoprefixer没有添加web-kit前缀7. javascript - 为什么输入框什么都没输取到的值却是undefined??8. windows-7 - Win7中Vmware Workstatoin与Xampp中Apache服务器端口冲突?9. javascript - html标签的class属性里面怎么嵌入变量10. css3 - 没明白盒子的height随width的变化这段css是怎样实现的?

网公网安备