输出类型
目录
输出简单类型
CustomerMapper.java:返回值为简单类型。
public interface CustomerMapper {
/*查询总数*/
public Integer getAccountCustomer();
}
CustomerMapper.xml :返回值 resultType 为简单类型,这个我们之前经常使用,已经很熟悉了。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//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 {
@Test
public 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 mapper
PUBLIC "-//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 {
@Test
public 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。