原因:MySQL与Java中的命名规范不同。
Java变量名:首字母小写的驼峰命名法,如productName
数据库字段名:不同单词下划线隔开,如product_name
解决方式
方式一:sql语句为表中的字段取别名
<select id="select" resultType="Product">
SELECT product_name productName FROM t_product where product_name = #{product_name};
<select>
方式二:mapper.xml自定义resultMap属性
<resultMap id="productMap" type="Product">
<!--配置列名和类属性的映射关系,property为属性名,column为列名-->
<!--同一个类中所有属性和对应表的所有列都要写上-->
<id property="id" column="id"></id>
<result property="productName" column="product_Name"></result>
<result property="dirId" column="dir_id"></result>
<result property="salePrice" column="sale_price"></result>
<result property="cutoff" column="cutoff"></result>
</resultMap>
<!--resultMap属性对应上面配好的resultMap的id,id为标记不同resultMap的唯一标识符-->
<select id="select" resultMap="productMap">
SELECT * from t_product where dir_id=#{dir_id};
</select>
方式三:添加标签
在mybatis的主配置文件mybatis-config.xml中增加settings标签,采用mybatis的自带把下划线分割转换为驼峰命名。
<settings>
<!-- 映射下划线为驼峰 如果属性名与字段名没对上时使用 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>