MyBatis-映射文件05-resultMap自定义结果封装规则

MyBatis-映射文件05-resultMap自定义结果封装规则

mapper.xml文件中标签下的标签可以自定义查询结果的封装规则,具体用法见代码注释

示例:

映射文件:EmployeeMapper.xml



<mapper namespace="dao.EmployeeMapper">
    
	<resultMap type="bean.Employee" id="MyEmp">
		
		<id column="id" property="id"/>	
		
		<result column="last_name" property="lastName"/>
		
		<result column="email" property="email"/>
		<result column="gender" property="gender"/>
	resultMap>
	
	
	<select id="getEmpById" resultMap="MyEmp">
		select * from tbl_employee where id = #{id}
	select>
mapper>

在全局配置文件mybatis-config.xml中不开启驼峰命名,进行下面的测试,查看能否将数据库中的last_name字段的值封装进 JavaBean 的 lastName 成员变量

测试:

package test;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import bean.Employee;
import dao.EmployeeMapper;

public class MyBatisTest {

	// 获取SqlSessionfactory对象的方法
	public SqlSessionFactory getSqlSessionFactory() throws IOException {
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		return new SqlSessionFactoryBuilder().build(inputStream);

	}

	@Test
	public void test() throws IOException {
		SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
		SqlSession openSession = sqlSessionFactory.openSession();
		try {
			EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
			Employee employee = mapper.getEmpById(1);
			System.out.println(employee);
		} finally {
			openSession.close();
		}
	}
}

执行上面的测试方法,可以看到控制台输出

DEBUG 10-31 18:11:43,482 ==>  Preparing: select * from tbl_employee where id = ?   (BaseJdbcLogger.java:145) 
DEBUG 10-31 18:11:43,545 ==> Parameters: 1(Integer)  (BaseJdbcLogger.java:145) 
DEBUG 10-31 18:11:43,575 <==      Total: 1  (BaseJdbcLogger.java:145) 
Employee [id=1, lastName=Admin, email=jerry.com, gender=1]

由此可见,通过使用 resultMap 标签来自定义封装的规则,在不开启驼峰命名的时候也可以将 last_name字段的值封装进 JavaBean 的 lastName 变量中;

resultMap 标签就是用于定义 数据库表的字段名 与 JavaBean实体类的成员变量 的对应关系

(resultMap的更大作用应该是在于其内部的association标签和collection标签,这两个标签主要用于多表联合查询,以及discriminator鉴别器)

你可能感兴趣的:(Java框架,mybatis,resultMap标签,自定义封装规则,查询返回值的封装)