SSM整合篇】二. 基于简单案例的一对多多表查询案例

SSM-多表查询

基于简单案例https://blog.csdn.net/TheNew_One/article/details/103830107的多表查询案例

github源码(day53-ssm-oneToMaphttps://github.com/1196557363/ideaMavenProject

1. pom不变
2. 三个配置文件和web.xml不变
3. 修改User对象和新建一个表和Bean
添加 // 实现一对多   private List<Cart> cars;
package com.wpj.bean;

import lombok.*;
import org.springframework.stereotype.*;

import java.util.*;

/**
 * ClassName: User
 * Description:
 *
 * @author JieKaMi
 * @version 1.0
 * @date: 2020\1\4 0004 10:24
 * @since JDK 1.8
 */
@Data
@Component
public class User {
    private Integer uId;
    private String username;
    private String password;
    private Integer isDelete;
    // 实现一对多
    private List<Cart> carts;
}


创建一个cart表及定义对应表的bean

创建cart表

package com.wpj.bean;

import lombok.*;
import org.springframework.stereotype.*;

/**
 * ClassName: Cart
 * Description:
 *
 * @author JieKaMi
 * @version 1.0
 * @date: 2020\1\4 0004 15:54
 * @since JDK 1.8
 */
@Data
@Component
public class Cart {
	// 将u_id 和 is_delete 改为 uID 和 isDelete 因为mapper文件是用了resultMap映射关系
    private Integer cId;
    private Integer goodsNum;
    private Integer userId;
    private Integer goodsId;
    private Integer isDelete;
}

4. 修改原有IUserDao和定义ICartDao及创建对应mapper.xml
修改原有IUserDao
package com.wpj.dao;

import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.*;
import com.wpj.bean.*;

/**
 * ClassName: IUserDao
 * Description:
 *
 * @author JieKaMi
 * @version 1.0
 * @date: 2020\1\4 0004 10:26
 * @since JDK 1.8
 */
@Repository
public interface IUserDao {

    /**
     * 添加功能
     * @param user 添加的对象
     * @return
     */
    Integer insertUser(@Param("user") User user);

    /**
     *  根据 id 查询对应的用户信息
     * @param uId
     * @return
     */
    User getUserById(@Param("uId") Integer uId);

}
UserMapper添加对应标签
<?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="com.wpj.dao.IUserDao">
    
    <!-- 实体类属性映射mysql表字段 -->
    <resultMap id="userMap" type="user">
        <id property="uId" column="u_id" />
        <result property="username" column="username" />
        <result property="password" column="password" />
        <result property="isDelete" column="is_detele" />
        <!--
          property    对应的是对象中的属性名
          ofType      对应的是集合的泛型
          column      外键关联对应的字段
          select      级联查询接口的方法
      -->
        <collection property="carts" ofType="cart" column="u_id" select="com.wpj.dao.ICartDao.getCartById" />

    </resultMap>

    <!-- 开启主键回填 -->
    <insert id="insertUser" useGeneratedKeys="true" keyProperty="user.uId">
        INSERT INTO user(username, password) VALUES (#{user.username},#{user.password})
    </insert>
    
    <!-- 根据ID查询User 顺便去调用com.wpj.dao.ICartDao.getCartById -->
    <select id="getUserById" resultMap="userMap">
        select * from user where u_id = #{uId}
    </select>

</mapper>
定义对应的ICartDao
package com.wpj.dao;

import com.wpj.bean.*;
import org.apache.ibatis.annotations.*;

import java.util.*;

/**
 * ClassName: ICartDao
 * Description:
 *
 * @author JieKaMi
 * @version 1.0
 * @date: 2020\1\4 0004 16:41
 * @since JDK 1.8
 */
@Repository
public interface ICartDao {

    /**
     * 根据uId获取对应的购物车信息
     * @param uId
     * @return
     */
    List<Cart> getCartById(@Param("uId") Integer uId);

}

CartMapper.xml
<?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="com.wpj.dao.ICartDao">

	<!-- 实体类属性映射mysql表字段 -->
    <resultMap id="cartMap" type="cart">
        <id property="cId" column="c_id" />
        <result property="goodsNum" column="goods_num" />
        <result property="userId" column="user_id" />
        <result property="goodsId" column="goods_id" />
        <result property="isDelete" column="is_delete" />
    </resultMap>


    <select id="getCartById" resultMap="cartMap">
        select * from cartMap where user_id = #{uId}
    </select>

</mapper>
5. 修改UserService及其实现类
UserService
 
public interface IUserService {

    /**
     * 注册功能
     * @param user 添加的用户对象
     * @return
     */
    Integer insertUser(User user);
 	/**
     * 根据用户 id 查询用户信息(级联查询购物车信息)
     * @param uId
     * @return
     */
    User getUserById(@Param("uId") Integer uId);
}
UserServiceImpl

@Service
public class UserServiceImpl implements IUserService {

    @Resource
    private IUserDao userDao;

    @Override
    public Integer insertUser(User user) {
        return userDao.insertUser(user);
    }

    @Override
    public User getUserById(Integer uId) {
        return userDao.getUserById(uId);
    }
}
6.Controller添加方法
 	package com.wpj.web.controller;

import com.sun.org.apache.bcel.internal.generic.*;
import lombok.extern.slf4j.*;
import org.springframework.http.*;
import org.springframework.web.bind.annotation.*;
import com.wpj.bean.*;
import com.wpj.service.*;

import javax.annotation.*;
import java.util.*;

/**
 * ClassName: UserController
 * Description:
 *          RestController == Controller + ResponseBody
 *
 * @author JieKaMi
 * @version 1.0
 * @date: 2020\1\4 0004 10:38
 * @since JDK 1.8
 */

@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {

    @Resource
    private IUserService userService;

    /**
     * produces = MediaTyp.APPLICATION_JSON_VALUE 解决响应乱码问题
     * @param user
     * @return
     */
    @RequestMapping(value = "/insert", method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
    public String insertUser(User user) {
        log.debug("user: " +user);
        Integer result = userService.insertUser(user);
        log.debug("result: " + (result == 1));
        log.debug("user: " +user);
        return "添加成功";
    }

    /**
     *
     * @param uId 传入的uId
     * @return
     */
    @RequestMapping(value = "/getUserById")
    public User getUserById(Integer uId) {
        return userService.getUserById(uId);
    }
}

7.test
部署到tomcat后 访问 localhost:8080/day53-ssm-oneToMany/user/getUserById?uId=1
  • day53-ssm-oneToMany ==》 项目名
  • user ==》controller映射路径
  • getUserById==》controler里面的方法映射路径
  • ?uId=1 ==》传入的参数
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值