SSM integration articles] II. Case-many multi-table query based on the simple case

SSM- multi-table query

Based on the simple case https://blog.csdn.net/TheNew_One/article/details/103830107 multi-table queries cases

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

1. pom unchanged

2. The three configuration files and web.xml unchanged

3. Modify the User object and create a new table and 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

Create a table 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. Modify the definition of the original and IUserDao ICartDao and creates a corresponding 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>

Its implementation class 5. Modify 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 Add Method

 	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 == "item name
  • user == "controller to map the path
  • getUserById == "controler method for mapping the inside of the path
  • ? UId = 1 == "argument passed
Published 42 original articles · won praise 8 · views 2447

Guess you like

Origin blog.csdn.net/TheNew_One/article/details/103834117