lec ngs mybatis ati 使用 lin 记录 ssi
通过 SQL 语句的字段别名功能,可以将记录映射到 resultType 指定的 Java Bean 类型的属性的属性上。
- <!-- 通过定义select语句的字段别名为XXX.YYY的形式,可以将字段值赋值给PersonWrapper类的属性person的属性
- -->
- <select id="findPersonWrapper" parameterType="java.lang.String" resultType="com.test.mybatis3.pojo.PersonWrapper">
- select id "person.id",name "person.name",status "person.status" from t_person
- where id=#{id}
- </select>
PersonWrapper 的定义如下:
- /**
- * @Title: PersonWrapper.java
- * @Package com.test.mybatis3.pojo
- * @Description:
- * @author http://www.cnblogs.com/coe2coe/
- * @date 2017年4月14日 下午10:52:05
- * @version V1.0
- */
- package com.test.mybatis3.pojo;
- /**
- * @ClassName: PersonWrapper
- * @Description:
- * @author http://www.cnblogs.com/coe2coe/
- * @date 2017年4月14日 下午10:52:05
- *
- */
- public class PersonWrapper {
- Person person;
- public Person getPerson() {
- return person;
- }
- public void setPerson(Person person) {
- this.person = person;
- }
- }
PersonMapper 接口的对应方法定义如下:
- /**
- * 根据ID查找单个记录。
- * *@param person,使用Person对象的id属性。
- * *@return Person类的包装类.
- */
- PersonWrapper findPersonWrapper(Person person) throwsException;
单元测试代码如下:
- //根据Person的对象的属性id的值进行查找。
- Person p =new Person();
- p.setId("zhangsan");
- PersonWrapper personWrapper = personMapper.findPersonWrapper(p);
- System.out.println(personWrapper);
运行结果如下:
0 [main] DEBUG com.test.mybatis3.mapper.PersonMapper.findPersonWrapper - ==> Preparing: select id "person.id",name "person.name",status "person.status" from t_person where id=
53 [main] DEBUG com.test.mybatis3.mapper.PersonMapper.findPersonWrapper - ==> Parameters: zhangsan(String)
70 [main] TRACE com.test.mybatis3.mapper.PersonMapper.findPersonWrapper - <== Columns: person.id, person.name, person.status
70 [main] TRACE com.test.mybatis3.mapper.PersonMapper.findPersonWrapper - <== Row: zhangsan, zhang san, 0
73 [main] DEBUG com.test.mybatis3.mapper.PersonMapper.findPersonWrapper - <== Total: 1
[email protected]
resultType 可以使用 HashMap 来映射一条记录的所有字段。HashMap 的别名可以使用 hashmap。
- <!-- resultType:hashmap,即HashMap -->
- <select id="findPersonByNameHashMap" parameterType="com.test.mybatis3.pojo.Criteria" resultType="hashmap">
- select * from t_person where name like '%${person.name}%'
- </select>
PersonMapper 接口的方法定义:
- /**
- * 使用HashMap<String,Object>作为返回值,MyBatis将一条记录的所有字段保存在hashmap中。
- * @param criteria
- * @return
- * @throws Exception
- */
- List> findPersonByNameHashMap(Criteria criteria) throwsException;
单元测试代码:
- @Test
- public voidtestFindPersonByNameHashMap()throws Exception
- {
- //使用SqlMapConfig.xml配置文件。
- InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
- //构造MyBatis的SessionFactory对象.
- SqlSessionFactory sessionBuilder =new SqlSessionFactoryBuilder().build(is);
- //将会指向MyBatis的Session对象实例。
- SqlSession session =null;
- try{
- //打开Session。
- session = sessionBuilder.openSession();
- //找到MyBatis自动实现的PersonMapper接口的代理对象。
- PersonMapper personMapper = session.getMapper(PersonMapper.class);
- //根据查询条件查找。
- Criteria criteria =new Criteria();
- criteria.getPerson().setName("zhang");
- List> persons = personMapper.findPersonByNameHashMap(criteria);
- System.out.println(persons);
- }
- catch(Exception ex){
- ex.printStackTrace();
- throw ex;
- }
- finally{
- //确保关闭session对象。
- if(null!= session){
- session.close();
- session =null;
- }
- }
- }
运行结果:
0 [main] DEBUG com.test.mybatis3.mapper.PersonMapper.findPersonByNameHashMap - ==> Preparing: select * from t_person where name like '%zhang%'
35 [main] DEBUG com.test.mybatis3.mapper.PersonMapper.findPersonByNameHashMap - ==> Parameters:
129 [main] TRACE com.test.mybatis3.mapper.PersonMapper.findPersonByNameHashMap - <== Columns: id, name, status
129 [main] TRACE com.test.mybatis3.mapper.PersonMapper.findPersonByNameHashMap - <== Row: zhangsan, zhang san, 0
145 [main] DEBUG com.test.mybatis3.mapper.PersonMapper.findPersonByNameHashMap - <== Total: 1
[{name=zhang san, id=zhangsan, status=0}]
MyBatis 应用开发 (11) 映射之结果映射字段别名和 HashMap
来源: http://www.bubuko.com/infodetail-2034733.html