返回值类型作为结果的返回,可以实现对数据成果的自动包装;
/** * 根据学生姓名查询学生数量 * @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
它的值有两种类型,全限定名称和自定义别名:
(1) 全限定名称
使用java类型的全限定名称。表示的意思是mybatis执行sql,把ResultSet中的数据转为限定的类型的对象。
(2) 自定义别名
mybatis提供的对java类型定义简短,好记的名称。自定义别名有两种方式:分别为typeAlias和package;
① 方法一:使用typeAlias自定义别名:
优点:别名可以自定义;
缺点:每个类型必须单独定义;
方法二:package自定义别名
主配置文件中配置报名,在mapper.xml中直接使用,这一种方式resultType中不区分大小写,所以全用小写同样也可以;
优点:使用方便,一次给多个类定义别名;
缺点:别名不能随便定义,必须是类名;
这两种自定义别名都有优点和缺点,所以建议是不适用别名,就使用全限定名称,这样清晰明了。
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 条评论) “” |