resultType是sql映射文件中定义返回值类型,返回值有基本类型,对象类型,List类型,Map类型等。现总结一下再解释
总结:
resultType:
1、基本类型 :resultType=基本类型
2、List类型: resultType=List中元素的类型
3、Map类型 单条记录:resultType =map
多条记录:resultType =Map中value的类型
1、对象类型
对于对象类型resultType直接写对象的全类名就可以了
实例:
hotelMapper接口
packagecom.pjf.mybatis.dao;importcom.pjf.mybatis.po.Hotel;public interfaceHotelMapper {//返回值类型为Hotel
publicHotel getHotel(Integer i);
}
HotelMapper.xml
select * from hotel
where
id=#{id}
测试类:
packagecom.pjf.mybatis;importjava.io.IOException;importjava.io.InputStream;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importorg.junit.Test;importcom.pjf.mybatis.dao.HotelMapper;importcom.pjf.mybatis.po.Hotel;public classTestHotel {public SqlSessionFactory sqlSessionFactory() throwsIOException {//mybatis的配置文件
String resource = "mybatis_config.xml";//使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)TestHotel.class.getClassLoader()
InputStream is =Resources.getResourceAsStream(resource);//构建sqlSession的工厂
SqlSessionFactory sessionFactory = newSqlSessionFactoryBuilder().build(is);returnsessionFactory;
}//查
@Testpublic void getHotel() throwsIOException {
SqlSessionFactory sessionFactory=sqlSessionFactory();
SqlSession session=sessionFactory.openSession();
HotelMapper hotelMapper= session.getMapper(HotelMapper.class);
System.out.println(hotelMapper.getClass());//直接返回Hotel对象,打印出来
Hotel hotel = hotelMapper.getHotel(1001);
System.out.println(hotel);
session.close();
}
}
2、List类型
返回值为List类型,resultType为List中对象的类型,如List,resultType为Hotel
实例:
hotelMapper接口
packagecom.pjf.mybatis.dao;importjava.util.List;importcom.pjf.mybatis.po.Hotel;public interfaceHotelMapper {//返回值为List
public ListgetHotel(Integer i);
}
hotelMapper.xml
select * from hotel
where
price>#{price}
测试类
packagecom.pjf.mybatis;importjava.io.IOException;importjava.io.InputStream;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importorg.junit.Test;importcom.pjf.mybatis.dao.HotelMapper;importcom.pjf.mybatis.po.Hotel;public classTestHotel {public SqlSessionFactory sqlSessionFactory() throwsIOException {//mybatis的配置文件
String resource = "mybatis_config.xml";//使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)TestHotel.class.getClassLoader()
InputStream is =Resources.getResourceAsStream(resource);//构建sqlSession的工厂
SqlSessionFactory sessionFactory = newSqlSessionFactoryBuilder().build(is);returnsessionFactory;
}//查
@Testpublic void getHotel() throwsIOException {
SqlSessionFactory sessionFactory=sqlSessionFactory();
SqlSession session=sessionFactory.openSession();
HotelMapper hotelMapper= session.getMapper(HotelMapper.class);
System.out.println(hotelMapper.getClass());//返回值为List
List list = hotelMapper.getHotel(1000);for(Hotel hotel : list) {
System.out.println(hotel);
}
session.close();
}
}
3、Map类型
a、返回单条记录的map,key为属性,值为属性值。resultType为map
hotelMapper接口
packagecom.pjf.mybatis.dao;importjava.util.Map;importcom.pjf.mybatis.po.Hotel;public interfaceHotelMapper {//返回值为Map,key为属性名,value为属性值
public MapgetHotel(Integer i);
}
hotelMapper.xml
select * from hotel
where
id=#{id}
测试类,返回id=1001的酒店
packagecom.pjf.mybatis;importjava.io.IOException;importjava.io.InputStream;importjava.util.Map;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importorg.junit.Test;importcom.pjf.mybatis.dao.HotelMapper;importcom.pjf.mybatis.po.Hotel;public classTestHotel {public SqlSessionFactory sqlSessionFactory() throwsIOException {//mybatis的配置文件
String resource = "mybatis_config.xml";//使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)TestHotel.class.getClassLoader()
InputStream is =Resources.getResourceAsStream(resource);//构建sqlSession的工厂
SqlSessionFactory sessionFactory = newSqlSessionFactoryBuilder().build(is);returnsessionFactory;
}//查
@Testpublic void getHotel() throwsIOException {
SqlSessionFactory sessionFactory=sqlSessionFactory();
SqlSession session=sessionFactory.openSession();
HotelMapper hotelMapper= session.getMapper(HotelMapper.class);
System.out.println(hotelMapper.getClass());//返回值为map
Map map = hotelMapper.getHotel(1001);
System.out.println(map);
session.close();
}
}
b、返回多条记录的map,key为任意一属性,值为对象类型。如Map,resultType为Hotel
返回多条记录的map时,key为任意一属性,值为对象类型,不过key需要通过@MapKey("hotelName")指定对象中一个属性名为key
实例:
hotelMapper接口
packagecom.pjf.mybatis.dao;importjava.util.Map;importorg.apache.ibatis.annotations.MapKey;importcom.pjf.mybatis.po.Hotel;public interfaceHotelMapper {//返回值为Map,key需要通过@MapKey("属性名")来指定javaBean中的一个属性名为key,value为对象
@MapKey("hotelName")public MapgetHotel(Integer i);
}
hotelMapper.xml文件
select * from hotel
where
price>#{price}
测试类:返回价格>1000以上的酒店
packagecom.pjf.mybatis;importjava.io.IOException;importjava.io.InputStream;importjava.util.Map;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importorg.junit.Test;importcom.pjf.mybatis.dao.HotelMapper;importcom.pjf.mybatis.po.Hotel;public classTestHotel {public SqlSessionFactory sqlSessionFactory() throwsIOException {//mybatis的配置文件
String resource = "mybatis_config.xml";//使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)TestHotel.class.getClassLoader()
InputStream is =Resources.getResourceAsStream(resource);//构建sqlSession的工厂
SqlSessionFactory sessionFactory = newSqlSessionFactoryBuilder().build(is);returnsessionFactory;
}//查
@Testpublic void getHotel() throwsIOException {
SqlSessionFactory sessionFactory=sqlSessionFactory();
SqlSession session=sessionFactory.openSession();
HotelMapper hotelMapper= session.getMapper(HotelMapper.class);
System.out.println(hotelMapper.getClass());//返回值为map
Map map = hotelMapper.getHotel(1000);
System.out.println(map);
session.close();
}
}