Mybatis查询(二)

范例:定义实现个人信息(密码)修改的功能
1、接口方法

//定义实现个人信息(密码)修改的功能
	public int updatePwd(@Param("uid") Integer id,@Param("userPassword")String pwd);

2、映射文件

 <!-- 实现个人密码修改 -->
	<update id="updatePwd">
	update smbms_user set userPassword=#{userPassword} where id=#{uid}
	
	</update>

测试

@Test
    public void test10() {
    	SqlSession sqlSession=SqlSessionUtil.creatSqlSession();
    	

    	int result = 0;
		try {
			result = sqlSession.getMapper(UserMapper.class).updatePwd(23, "12345886");
			sqlSession.commit();
		} catch (Exception e) {
			sqlSession.rollback();
		}

		
		if(result>0) {
			System.out.println("用户密码修改成功");
		}else {
			System.out.println("用户密码修改失败");
		}
    	SqlSessionUtil.closSqleSession(sqlSession);
    }

范例:实现指定角色的所有用户信息查询(类型嵌套)
1、接口方法

// 实现指定角色的所有用户信息查询
    public List<User> getUserListByRoleId(@Param("rid") Integer id);

2、映射文件

<!-- 实现指定角色的所有用户信息查询 -->
	<select id="getUserListByRoleId" parameterType="Integer" resultType="User" resultMap="userListRole">
	select u.*,r.id as
		r_id,r.roleCode,r.roleName from smbms_user u,smbms_role r
		where
		u.userRole=#{rid} and u.userRole=r.id
	</select>
	<resultMap type="User" id="userListRole">
	<id property="id" column="id"/>
	<result property="userName" column="userName" />
	<result property="userPassword" column="userPassword" />
	<result property="phone" column="phone" />
	<!-- <嵌套类属性>映射引用类型属性 -->
	<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"
	resultType="User" resultMap="userListRole">
	select u.*,r.id as
	r_id,r.roleCode,r.roleName from smbms_user u,smbms_role r
	where
	u.userRole=#{rid} and u.userRole=r.id
</select>
	<resultMap type="User" id="userListRole">
		<id property="id" column="id" />
		<result property="userName" column="userName" />
		<result property="userPassword" column="userPassword" />
		<result property="phone" column="phone" />
		<!-- <嵌套类属性>映射引用类型属性 -->
		<association property="role" javaType="Role" resultMap="RoleResult"/>
	</resultMap>

	<resultMap type="Role" id="RoleResult">
		<id property="id" column="r_id" />
		<result property="roleCode" column="roleCode" />
		<result property="roleName" column="roleName" />
	</resultMap>

测试

 @Test
    public void test11() {
    	SqlSession sqlSession=SqlSessionUtil.creatSqlSession();
    	

    	List<User> list = null;
		try {
			list = sqlSession.getMapper(UserMapper.class).getUserListByRoleId(3);
			sqlSession.commit();
		} catch (Exception e) {
			sqlSession.rollback();
		}

		//遍历结果集
		for(User u:list){
			System.out.println(u.getUserName()+"\t"+u.getUserPassword()+"\t"+u.getPhone() +u.getRole().getRoleCode()+"\t"+u.getRole().getRoleName());
			
		}
    	SqlSessionUtil.closSqleSession(sqlSession);
    }

范例:实现查询指定用户的多个地址
编写实体类Address
给User类增加集合类型属性 List


声明接口
映射
测试
1、接口方法

//实现查询指定用户的多个地址
    public List<User> getAddressListByUserId(@Param("uid") Integer id);

2、映射文件

<!-- 查询用户多个地址 -->
	<select id="getAddressListByUserId" resultType="User"
		parameterType="Integer" resultMap="userListAddress">
		select u.*,a.id as a_id ,a.contact,a.addressDesc,a.postCode from smbms_user
		u left join smbms_address a on u.id=a.userId where u.id=#{uid}
	</select>
	<resultMap type="User" id="userListAddress">
		<id property="id" column="id" />
		<result property="userCode" column="userCode" />
		<result property="userPassword" column="userPassword" />
		<result property="userName" column="userName" />
		<result property="phone" column="phone" />
		<!-- 一对多 集合属性 -->
		<collection property="addressList" ofType="Address"
			resultMap="addressList" />
	</resultMap>
	<resultMap type="Address" id="addressList">
		<id property="id" column="a_id" />
		<result property="contact" column="contact" />
		<result property="addressDesc" column="addressDesc" />
	</resultMap>

测试

 @Test
    public void test12() {
    	SqlSession sqlSession=SqlSessionUtil.creatSqlSession();
    	

    	List<User> list = null;
		try {
			list = sqlSession.getMapper(UserMapper.class).getAddressListByUserId(1);
			sqlSession.commit();
		} catch (Exception e) {
			sqlSession.rollback();
		}

		//遍历结果集
				for(User u:list){
					System.out.print(u.getUserName()+"\t"+u.getUserPassword()+"\t"+u.getPhone()+"\t,性别:" +u.getGender());
					System.out.println();
					for(Address a :u.getAddressList()){
						System.out.println(a.getContact()+"\t"+a.getAddressDesc()+"\t"+a.getPostCode());
					}
					
				}
    	SqlSessionUtil.closSqleSession(sqlSession);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值