09.mybatis返回值类型详解

返回值类型作为结果的返回,可以实现对数据成果的自动包装;

一、 表示简单类型

/** * 根据学生姓名查询学生数量 * @param name 学生姓名 * @return */public  Integer selectCountByStuName(String name);
@Testpublic void selectCountByStuName(){    //        读取配置文件到数据流    InputStream stream = Student.class.getClassLoader().getResourceAsStream("mybatis-config.xml");    //        创建SqlSessionFactory    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);    //创建SqlSession    SqlSession sqlSession = sqlSessionFactory.openSession();    //获取StudentMapper    StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);    //执行查询语句    Integer count = mapper.selectCountByStuName("小明");    //打印结果    System.out.println("count = " + count);}

二、对象类型

resultType属性:在执行select时使用,作为标签的属性出现的。作为执行sql得到ResultSet转换的类型,使用类型的完全限定名或别名。注意如果返回的是集合,那应该设置为集合包含的类型(比如List 集合,应该使用Student的全类名),而不是集合本身。

它的值有两种类型,全限定名称和自定义别名:

(1) 全限定名称

使用java类型的全限定名称。表示的意思是mybatis执行sql,把ResultSet中的数据转为限定的类型的对象。

(2) 自定义别名

mybatis提供的对java类型定义简短,好记的名称。自定义别名有两种方式:分别为typeAlias和package;

① 方法一:使用typeAlias自定义别名:

        

优点:别名可以自定义;

缺点:每个类型必须单独定义;

方法二:package自定义别名

主配置文件中配置报名,在mapper.xml中直接使用,这一种方式resultType中不区分大小写,所以全用小写同样也可以;

        

优点:使用方便,一次给多个类定义别名;

缺点:别名不能随便定义,必须是类名;

这两种自定义别名都有优点和缺点,所以建议是不适用别名,就使用全限定名称,这样清晰明了。

三、返回结果是Map

sql 的查询结果作为 Map 的 key 和 value。推荐使用 Map

查询结果如果是一个对象,可以封装为一个对象,如果是大于一个对象的字段,可以把查询结果封装到map里面,这样返回到前段,直接对应json;

注意:Map 作为接口返回值,sql 语句的查询结果最多只能有一条记录。大于一条记录是错误。

/** * 返回map类型查询结果  * @param id  * @return */  @MapKey("id")public Map getMapById(@Param("id") String id);
@Testpublic void getMapById() {    //        读取配置文件到数据流    InputStream stream = Student.class.getClassLoader().getResourceAsStream("mybatis-config.xml");    //        创建SqlSessionFactory    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);    //创建SqlSession    SqlSession sqlSession = sqlSessionFactory.openSession();    //获取StudentMapper    StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);    //执行查询语句    Map studentMap = mapper.getMapById("6");    System.out.println(studentMap.get("id"));}
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章