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-oneToMap)https://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
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