mybatis 使用resultMap实现关联数据的查询(association 和collection )
生活随笔
收集整理的這篇文章主要介紹了
mybatis 使用resultMap实现关联数据的查询(association 和collection )
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- namespace的名字需要跟接口的類名一致 -->
<mapper namespace="cn.bdqn.dao.UserMapper"><!-- 1、resultMap屬性:type為java實(shí)體類;id為此resultMap的標(biāo)識2、resultMap的子元素:id – 一般對應(yīng)到數(shù)據(jù)庫中該行的ID,設(shè)置此項(xiàng)可以提高M(jìn)ybatis性能.result – 映射到JavaBean 的某個(gè)“簡單類型”屬性,String,int等.association – 映射到JavaBean 的某個(gè)“復(fù)雜類型”屬性,其他JavaBean類.collection –復(fù)雜類型集合 (演示示例2)--><!--根據(jù)roleId獲取用戶列表: 當(dāng)數(shù)據(jù)庫中的字段信息與對象的屬性不一致時(shí)需要通過resultMap來映射 --><!-- <resultMap type="User" id="seachUserResult"><result property="id" column="id"/><result property="userCode" column="userCode"/><result property="userName" column="userName"/><result property="roleId" column="roleId"/><result property="roleName" column="roleName"/></resultMap><select id="getUserListByRoleId" parameterType="Role" resultMap="seachUserResult">select u.*,r.roleName as roleName from user u,role r where u.roleId = r.id and u.roleId = #{id}</select> --><!-- 根據(jù)roleId獲取用戶列表 association start--><resultMap type="User" id="seachUserResult"><result property="id" column="id"/><result property="userCode" column="userCode" /><result property="userName" column="userName" /><result property="roleId" column="roleId" />
//property=“屬性名” javaType=“屬性名的類型” ----(一對一)
<!-- <association property="role" javaType="Role" ><result property="id" column="id"/><result property="roleCode" column="roleCode"/><result property="roleName" column="roleName"/></association> --><association property="role" javaType="Role" resultMap="roleMap"/></resultMap><resultMap type="Role" id="roleMap"><result property="id" column="id"/> <result property="roleCode" column="roleCode"/> <result property="roleName" column="roleName"/> </resultMap><select id="getUserListByRoleId" parameterType="Role" resultMap="seachUserResult">select u.*,r.roleCode as roleCode,r.roleName as roleName from user u,role r where u.roleId = r.id and u.roleId = #{id}</select><!-- association end--><!-- 獲取指定用戶的地址列表(user表-address表:1對多關(guān)系) collection start--><resultMap type="User" id="userMap"><id property="id" column="userId"/>
//property是屬性名 ofType是List《Address》的類對象
<collection property="addressList" ofType="Address"><id property="id" column="a_id"/><result property="postCode" column="postCode"/><result property="addressContent" column="addressContent"/></collection></resultMap><select id="getAddressListByUserId" parameterType="User" resultMap="userMap">select *,a.id as a_id from user u,address a where u.id=a.userId and u.id=#{id}</select><!-- collection end --><select id="count" resultType="int">select count(1) from user</select><insert id="add" parameterType="User">insert into user (userCode,userName,userPassword) values (#{userCode},#{userName},#{userPassword})</insert><update id="update" parameterType="User">update user set userCode=#{userCode},userName=#{userName},userPassword=#{userPassword} where id=#{id}</update><delete id="delete" parameterType="User">delete from user where id=#{id}</delete><select id="getUserList" resultType="User">select * from user</select> </mapper>
//property=“屬性名” javaType=“屬性名的類型” ----(一對一)
<!-- <association property="role" javaType="Role" ><result property="id" column="id"/><result property="roleCode" column="roleCode"/><result property="roleName" column="roleName"/></association> --><association property="role" javaType="Role" resultMap="roleMap"/></resultMap><resultMap type="Role" id="roleMap"><result property="id" column="id"/> <result property="roleCode" column="roleCode"/> <result property="roleName" column="roleName"/> </resultMap><select id="getUserListByRoleId" parameterType="Role" resultMap="seachUserResult">select u.*,r.roleCode as roleCode,r.roleName as roleName from user u,role r where u.roleId = r.id and u.roleId = #{id}</select><!-- association end--><!-- 獲取指定用戶的地址列表(user表-address表:1對多關(guān)系) collection start--><resultMap type="User" id="userMap"><id property="id" column="userId"/>
//property是屬性名 ofType是List《Address》的類對象
<collection property="addressList" ofType="Address"><id property="id" column="a_id"/><result property="postCode" column="postCode"/><result property="addressContent" column="addressContent"/></collection></resultMap><select id="getAddressListByUserId" parameterType="User" resultMap="userMap">select *,a.id as a_id from user u,address a where u.id=a.userId and u.id=#{id}</select><!-- collection end --><select id="count" resultType="int">select count(1) from user</select><insert id="add" parameterType="User">insert into user (userCode,userName,userPassword) values (#{userCode},#{userName},#{userPassword})</insert><update id="update" parameterType="User">update user set userCode=#{userCode},userName=#{userName},userPassword=#{userPassword} where id=#{id}</update><delete id="delete" parameterType="User">delete from user where id=#{id}</delete><select id="getUserList" resultType="User">select * from user</select> </mapper>
接口?UserMapper?
public interface UserMapper {public int count();public void add(User user);public void update(User user);public void delete(User user);public List<User> getUserList();//根據(jù)roleId獲取用戶列表public List<User> getUserListByRoleId(Role role);//獲取指定用戶的地址列表(user表-address表:1對多關(guān)系)public User getAddressListByUserId(User user);}接口?RoleMapper?
public interface RoleMapper {public void add(Role role);public void update(Role role);public void delete(Role role);public List<Role> getRoleList(); } <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.bdqn.dao.RoleMapper"><select id="getRoleList" resultType="Role">select * from role</select><insert id="add" parameterType="Role">insert into role (roleCode,roleName) values (#{roleCode},#{roleName})</insert><update id="update" parameterType="Role">update role set roleCode=#{roleCode},roleName=#{roleName}where id=#{id}</update><delete id="delete" parameterType="Role">delete from role where id=#{id}</delete></mapper>User.java
public class User {private Integer id;private String userName;private String userCode;private String userPassword;private Integer roleId;//private String roleName;//collectionprivate List<Address> addressList;//associationprivate Role role;public Role getRole() {return role;}public void setRole(Role role) {this.role = role;}public List<Address> getAddressList() {return addressList;}public void setAddressList(List<Address> addressList) {this.addressList = addressList;}public Integer getRoleId() {return roleId;}public void setRoleId(Integer roleId) {this.roleId = roleId;}/**public String getRoleName() {return roleName;}public void setRoleName(String roleName) {this.roleName = roleName;}*/public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getUserCode() {return userCode;}public void setUserCode(String userCode) {this.userCode = userCode;}public String getUserPassword() {return userPassword;}public void setUserPassword(String userPassword) {this.userPassword = userPassword;}}address.java
public class Address {private Integer id;private Integer postCode;private String addressContent;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public Integer getPostCode() {return postCode;}public void setPostCode(Integer postCode) {this.postCode = postCode;}public String getAddressContent() {return addressContent;}public void setAddressContent(String addressContent) {this.addressContent = addressContent;}}?
轉(zhuǎn)載于:https://www.cnblogs.com/xuerong/p/5000233.html
總結(jié)
以上是生活随笔為你收集整理的mybatis 使用resultMap实现关联数据的查询(association 和collection )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vim: 远程登陆服务器时可能出现的:
- 下一篇: USACO Training Secti