使用delete完成删除操作
编写接口方法
int deleteUserById(@Param("id")Integer delId);
在映射文件中编写删除语句
<delete id="deleteUserById">
DELETE FROM USER WHERE id=#{id}
</delete>
编写测试
SqlSession sqlSession=null; try{ sqlSession=MyBatisUtil.createSqlSession(); int id=15; int count=sqlSession.getMapper(UserMapper.class).deleteUserById(id); System.out.println("数量:"+count); sqlSession.commit(); }catch (Exception ex){ ex.printStackTrace(); sqlSession.rollback(); }finally { MyBatisUtil.closeSqlSession(sqlSession); } |
使用resultMap实现高级结果映射(表表关联)
Role类
public class Role { private Integer id; private String roleCode; private String roleName; private Integer createdBy; private Date creationDate; private Integer modifyBy; private Date modifyDate; //省略getter和setter } |
修改pojo User类
public class User { private Integer id; //id private String userCode; //用户编码 private String userName; //用户名称 private String userPassword; //用户密码 private Integer gender; //性别 private Date birthday; //出生日期 private String phone; //电话 private String address; //地址 private Integer userRole; //用户角色 private Integer createdBy; //创建者 private Date creationDate; //创建时间 private Integer modifyBy; //更新者 private Date modifyDate; //更新时间 //private String userRoleName; //用户角色名称 private Role role; //省略getter&setter方法 } |
在UserMapper接口中添加方法
List<User> getUserListByRoleId(@Param("userRole")Integer roleId);
修改UserMapper.xml 增加getUserListByRoleId
xml <resultMap id="userRoleResult" type="User"> <id property="id" column="id"/> <result property="userCode" column="userCode"/> <result property="userName" column="userName"/> <result property="userRole" column="userRole"/> <association property="role" javaType="Role"> <id property="id" column="r_id"/> <result property="roleCode" column="roleCode"/> <result property="roleName" column="roleName"/> </association> </resultMap> <select id="getUserListByRoleId" parameterType="Integer" resultMap="userRoleResult"> SELECT u.*,r.id AS r_id,r.roleCode,r.roleName FROM user u,role r WHERE u.userRole=#{userRole} and u.userRole=r.id </select> |
使用外部resultMap复用配置
<resultMap id="roleResult" type="Role"> <id property="id" column="r_id"/> <result property="roleCode" column="roleCode"/> <result property="roleName" column="roleName"/> </resultMap> <resultMap id="userRoleResult" type="User"> <id property="id" column="id"/> <result property="userCode" column="userCode"/> <result property="userName" column="userName"/> <result property="userRole" column="userRole"/> <association property="role" javaType="Role" resultMap="roleResult"/> </resultMap> |
collection 一对多关联
创建pojo Addres.java
public class Address { private Integer id; private String contact; private String addressDesc; private String postCode; private String tel; private Integer createdBy; private Date creationDate; private Integer modifyBy; private Date modifyDate; private Integer userId; //省略getter和setter } |
修改User类增加地址列表属性
List<Address>addressList;
编写接口中的方法
List<User> getAddressListByUserId(@Param("id")Integer userId);
编写映射文件
<resultMap id="addressResult" type="Address"> <id column="a_id" property="id"/> <result property="postCode" column="postCode"/> <result property="tel" column="tel"/> <result property="contact" column="contact"/> <result property="addressDesc" column="addressDesc"/> </resultMap> <resultMap id="userAddressResult" type="User"> <id property="id" column="id"/> <result property="userCode" column="userCode"/> <result property="userName" column="userName"/> <collection property="addressList" ofType="Address" resultMap="addressResult"/> </resultMap> |
编写测试
SqlSession sqlSession=null; try{ sqlSession=MyBatisUtil.createSqlSession(); List<User> userList=sqlSession.getMapper(UserMapper.class).getAddressListByUserId(1); for (User user: userList) { System.out.println(user.getUserName()); List<Address> addresses=user.getAddressList(); for (Address address: addresses) { System.out.println("--- "+address.getContact()); } } }catch (Exception ex){ ex.printStackTrace(); }finally { MyBatisUtil.closeSqlSession(sqlSession); } |
resultMap自动映射级别和MyBatis缓存
autoMappingBehavior的三个级别
NONE:禁止自动匹配
PARTIAL:(默认)自动匹配所有属性,有内部嵌套(assocition,collection)除外
FULL:自动匹配所有
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。