resultType

执行 sql 得到 ResultSet 转换的类型,使用类型的完全限定名或别名。java的类型是任意的。 注意如果返回的是集
合,那应该设置为集合包含的类型,而不是集合本身。 resultType 和 resultMap,不能同时使用。
处理方式:

  1. mybatis执行sql语句,然后mybatis调用类的无参构造方法,创建对象。
  2. mybatis把ResultSet指定列值赋给同名的属性。

image.png

返回简单类型

如果只返回一个值,不需要类封装,可以使用别名
例如

  1. <select id="countStudent" resultType="_int">
  2. select count(*) from student
  3. </select>

定义自定义类型的别名

在mybatis主配置文件中定义,使用<typeAliases>
同级

  1. <typeAliases>
  2. <!--第一种方法, 一行一个别名-->
  3. <typeAlias type="com.liangwei.entity.Student" alias="stu" />
  4. <!--第二种方法, name是包名,这个包中的所有类,类名就是别名(类名不区分大小写)-->
  5. <package name="com.liangwei.entity"/>
  6. </typeAliases>

使用Map封装

建议key 和 value都使用Object

  1. 返回的key就是列名,value就是对应的值
  2. 只能返回一行记录,多余一行会错误。 ```xml

==> Preparing: select id, name from student where id=? ==> Parameters: 1002(Integer) <== Columns: id, name <== Row: 1002, 张三 <== Total: 1 {name=张三, id=1002}

  1. <a name="CGKk5"></a>
  2. # resultMap
  3. 结果映射,用于指定列名和Java对象的属性对应关系。<br />不能和resultType一起用<br />作用:
  4. 1. 自定义的列值赋给哪个属性
  5. 1. 当列名和属性名不一样的时候使用resultMap
  6. 如何使用:
  7. 1. 先定义resultMap。在映射文件中使用<resultMap>标签
  8. 1. 在select标签中,使用resultMap来引用1定义的
  9. ```xml
  10. <!--id: 自定义名称,type:java类型的全限定名称-->
  11. <resultMap id="studentMap" type="com.liangwei.entity.Student">
  12. <!--列名和java属性的关系-->
  13. <!--column:列名,property:java类型的属性名-->
  14. <!--主键字段使用id -->
  15. <id column="id" property="id" />
  16. <!-- 非主键字段使用result -->
  17. <result column="name" property="name"/>
  18. <result column="age" property="age"/>
  19. </resultMap>
  20. <select id="selectAllStudents" resultMap="studentMap">
  21. select id, name, email, age from student
  22. </select>