输出类型
目录
- 输出简单类型
- 输出 Map 类型
- key:列名 value:列名对应的值
- key:自己指定的列 value:自定义对象
- resultMap
输出简单类型
CustomerMapper.java:返回值为简单类型。
public interface CustomerMapper {/*查询总数*/public Integer getAccountCustomer();
}
CustomerMapper.xml :返回值 resultType 为简单类型,这个我们之前经常使用,已经很熟悉了。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itlike.mapper.CustomerMapper"><!--查询总记录数--><select id="getAccountCustomer" resultType="integer">SELECT count(*) FROM customer;</select></mapper>
测试类:
public class MyTest {@Testpublic void test(){SqlSession sqlSession = MybatisUtils.openSession();CustomerMapper mapper = sqlSession.getMapper(CustomerMapper.class);Integer accountCustomer = mapper.getAccountCustomer();System.out.println(accountCustomer);sqlSession.close();}
}
运行结果:输出了数据库中的数据数量。12
输出 Map 类型
key:列名 value:列名对应的值
CustomerMapper.java:返回值为 Map 类型
public interface CustomerMapper {/*根据Id查询用户*/public Map<String,Object> getCustomerWithId(Integer id);
}
CustomerMapper.xml:返回值为 Map
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itlike.mapper.CustomerMapper"><!--根据id查询客户--><select id="getCustomerWithId" resultType="java.util.Map">SELECT * FROM customer WHERE cust_id = #{id}</select></mapper>
测试类:
public class MyTest {@Testpublic void test(){SqlSession sqlSession = MybatisUtils.openSession();CustomerMapper mapper = sqlSession.getMapper(CustomerMapper.class);Map<String, Object> customer = mapper.getCustomerWithId(1);System.out.println(customer);sqlSession.close();}
}
运行结果:key 是列名 ,value 是列名对应的值。
{cust_profession=射手, cust_name=鲁班, cust_id=1, cust_phone=13499887733, email=12341241@qq.com}
key:自己指定的列 value:自定义对象
resultMap
之有在写输出时使用的都是 resultType,但是 resultType 要求字段名称和数据库当中的名称一致才能有值,否则为 null;如果 sql 查询字段名和 pojo 的属性名不一致,可以通过 resultMap 将字段名和属性名作一个对应关系。
当 domain 中的字段与数据库当中名字不一致时:
直接查询出来的结果会是 null,因为 domain 的字段与数据库不一样,只有一个名称相同的 email 可以查询到。
需要用 resultMap 自己做一个映射关系,将数据库中的名称与 domain 对应。
然后查询出来的结果便不是 null。