[SpringBoot]xml文件里写SQL用resultMap标签
<!-- AdminLoginInfoVO getLoginInfoByUsername(String username); --> <select id="getLoginInfoByUsername" resultMap="LoginInfoResultMap"> SELECT ams_admin.id, ams_admin.username, ams_admin.password, ams_admin.enable, ams_permission.value FROM ams_admin LEFT JOIN ams_admin_role ON ams_admin.id=ams_admin_role.admin_id LEFT JOIN ams_role_permission ON ams_admin_role.role_id=ams_role_permission.role_id LEFT JOIN ams_permission ON ams_role_permission.permission_id=ams_permission.id WHERE username=#{username} </select> <!-- resultMap标签:指导MyBatis封装查询结果 --> <!-- resultMap标签的id属性:自定义名称,也是select标签上使用resultMap属性的值 --> <!-- resultMap标签的type属性:封装查询结果的类型的全限定名 --> <resultMap id="LoginInfoResultMap" type="cn.tedu.csmall.passport.pojo.vo.AdminLoginInfoVO"> <!-- id标签:配置主键的列与属性的对应关系 --> <!-- result标签:配置普通的列与属性的对应关系 --> <!-- collection标签:配置List集合类型的属性与查询结果中的数据的对应关系 --> <!-- collection标签的ofType属性:集合中的元素类型,取值为类型的全限定名 --> <id column="id" property="id"/> <result column="username" property="username"/> <result column="password" property="password"/> <result column="enable" property="enable"/> <collection property="permissions" ofType="String"> <!-- constructor标签:通过构造方法来创建对象 --> <constructor> <!-- arg标签:配置构造方法的参数,如果构造方法有多个参数,依次使用多个此标签 --> <arg column="value"></arg> </constructor> </collection> </resultMap>
解释:
column表示的列
property表示属性,就是vo类里的属性
对于集合的属性用collection标签。即collection标签:配置List集合类型的属性与查询结果中的数据的对应关系。
collection标签需要配一个ofType标签,指定的是集合中的元素类型
constructor标签:通过构造方法来创建对象, arg标签:配置构造方法的参数,如果构造方法有多个参数,依次使用多个此标签:
把主键的result标签换成id标签,利于Mybatis框架去缓存查询结果,缓存查询结果的意思就是从数据库把结果查出来以后不销毁,下次还要查就直接把结果给你,以此提高数据的访问效率。所以主键用id,一般的用result,List集合用collection。
下一篇:
C语言-外部关键字extern