parameterType 配置参数:
该属性的取值可以是基本类型,引用类型(例如:String 类型),还可以是实体类类型(POJO 类),同时也可以使用实体类的包装类
基本类型和 String 我们可以直接写类型名称 ,也可以使用包名 . 类名的方式 ,例如 :java.lang.String。
实体类类型,目前我们只能使用全限定类名。
究其原因,是 mybaits 在加载时已经把常用的数据类型注册了别名,从而我们在使用时可以不写包名,而我们的是实体类并没有注册别名,所以必须写全限定类名。
我们也可以为自己的实体类注册别名,在主配置文件中使用 typeAliases 标签注册
在 SqlMapConfig.xml 中配置:
<typeAliases>
<!-- 单个别名定义 -->
<typeAlias alias="user" type="com.fgy.domain.User"/>
<!-- 批量别名定义,扫描整个包下的类,别名为类名(首字母大写或小写都可以) -->
<package name="com.fgy.domain"/>
<package name=" 其它包 "/>
</typeAliases>
resultType 配置结果类型:
resultType 属性可以指定结果集的类型,它支持基本类型和实体类类型。
它和 parameterType 一样,如果注册过类型别名的,可以直接使用别名,没有注册过的必须使用全限定类名。
同时,当结果类型是实体类名称时,要求实体类中的属性名称必须和查询语句中的列名保持一致,否则无法实现封装。
要想实现封装,可以使用别名或者配置 resultMap 结果类型
①使用别名:效率更高,不需要解析xml配置文件或者注解
<select id="findAll" resultType="com.fgy.domain.User">
select id as userId,username as userName,birthday as userBirthday,
sex as userSex,address as userAddress from user
</select>
② resultMap 结果类型:开发效率更快,易于维护,一次定义多处使用
<!-- 建立 User 实体和数据库表的对应关系
type 属性:指定实体类的全限定类名
id 属性:给定一个唯一标识,是给查询 select 标签引用用的。-->
<resultMap type="com.fgy.domain.User" id="userMap">
<id column="id" property="userId"/>
<result column="username" property="userName"/>
<result column="sex" property="userSex"/>
<result column="address" property="userAddress"/>
<result column="birthday" property="userBirthday"/>
</resultMap>
id 标签:用于指定主键字段
result 标签:用于指定非主键字段
column 属性:用于指定数据库列名
property 属性:用于指定实体类属性名称
在 select 标签中使用 resultMap 属性指定引用即可。同时 resultMap 可以实现将查询结果映射为复杂类型的 pojo,
比如在查询结果映射对象中包括 pojo 和 list 实现一对一查询和一对多查询。