今天,在使用resultMap 的时候,遇见一个需求。就是一个bean类 有一个List的属性。
bean类
public class ApplyModel {
private String id;
private String name;
private List<String> groups;
//省略setter getter 方法
}
可以看见 有一个List属性 。
在mapper里面 用反射的话,使用如下
<resultMap id="apply" type="com.example.sercurity.entity.ApplyModel">
<id column="id" property="orgUserId"/>
<result column="name" property="name"/>
<collection property="groups" ofType="string" javaType="arraylist">
<!-- 这里使用构造方法注入,String 没有属性-->
<constructor>
<arg column="group_name"/>
</constructor>
</collection>
</resultMap>
不再使用< result >标签,而是使用< constructor >。
这里简单提一下,这两个的区别,
- < result > 是属性映射。当要映射的类,具有一个属性时候,有setter getter方法 就可以使用这个。
- < constructor > 是构造方法,适用于上面String类这种没有setter getter方法的类
因为String只有构造方法可以赋值,所以 使用< constructor >标签。
总结
多给自己五分钟的时间,就可以变得很轻松。不要那么累
如果有不懂的,可以关注我的公众号 “知我饭否” 向我留言。我会每天更新一些文章,有兴趣的可以 微信 搜索"知我饭否" or 扫描下方二维码