一、mybatis解决字段名与属性名的映射问题
1.1、方式一:使用字段别名的方式
/**
* 查询所有用户信息
* @return
*/
List<Emp> selectByEmp();
<!--emp_name属性名的别名empName-->
<select id="selectByEmp" resultType="com.cjc.mybatis.entity.Emp">
select id,emp_name empName,age,sex,email from t_emp
</select>
@Test
public void test01(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
List<Emp> emps = mapper.selectByEmp();
emps.forEach(emp -> System.out.println("emp = " + emp));
}
1.2、方式二:使用mybtais的全局配置
在mybtis核心文件中配置
<!--设置mybatis的全局配置-->
<settings>
<!--将下划线自动映射为驼峰如:emp_name = empName-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
映射文件
<select id="selectByEmp" resultType="com.cjc.mybatis.entity.Emp">
select * from t_emp
</select>
1.3、方式三:使用resultMap解决
<!--
父标签
resultMap:设置自定义映射关系
type:设置映射关系中的实体类类型
id:唯一标识,不能重复
子标签:
id:设置主键的元素关系
result:设置普通字段的映射关系
属性:
property:设置映射关系中的属性名,跟实体类相对应
column:设置映射关系中的字段名,跟数据库表相对应
-->
<resultMap id="empResultMap" type="Emp">
<id property="id" column="id"></id>
<result property="empName" column="emp_name"></result>
<result property="age" column="age"></result>
<result property="sex" column="sex"></result>
<result property="email" column="email"></result>
</resultMap>
<select id="selectByEmp" resultMap="empResultMap">
select * from t_emp
</select>