<?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實體類;id為此resultMap的標識 2、resultMap的子元素: id – 一般對應到數據庫中該行的ID,設置此項可以提高Mybatis性能. result – 映射到JavaBean 的某個“簡單類型”屬性,String,int等. association – 映射到JavaBean 的某個“復雜類型”屬性,其他JavaBean類. collection –復雜類型集合 (演示示例2) --> <!--根據roleId獲取用戶列表: 當數據庫中的字段信息與對象的屬性不一致時需要通過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> --> <!-- 根據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對多關系) 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(); //根據roleId獲取用戶列表 public List<User> getUserListByRoleId(Role role); //獲取指定用戶的地址列表(user表-address表:1對多關系) 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; //collection private List<Address> addressList; //association private 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; } }