mybatis遇到的问题:数据库命名一般以下划线区分出来两个单词,但Java的实体类我们习惯用驼峰命名法,这就导致了表的字段和实体类中的参数对不上,mybatis则不能完成字段的映射。
mybatis提供了一种解决办法:resultMap
可以在mapper文件的头部增加以下示例代码:
<resultMap id="BaseResultMap" type="com.xinchen.pojo.Admin" >
<id column="admin_id" property="adminId" jdbcType="BIGINT" />
<result column="admin_name" property="adminName" jdbcType="VARCHAR" />
<result column="admin_pass" property="adminPass" jdbcType="VARCHAR" />
<result column="admin_level" property="adminLevel" jdbcType="INTEGER" />
但要注意,使用了resultMap后,需将原来的resultType替换成resultMap。但仅需要把select的resultType=“实体类”换成resultMap=“BaseResultMap”。其他的均不需要替换。
其!他!的!均!不!需!要!替!换!
id设置的是自增长的主键,column设置的是数据库里字段名,property是实体类的属性,jdbcType可以忽略不写。
还有两种解决办法,一是直接在mapper文件中为相关字段设置别名,但这样字段太多的话未免过于麻烦。而是利用mybatis提供的全局属性mapUnderscoreToCamelCase来解决。
代码:
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
记住是要配置在mybatis的配置文件中。