一对一查询需求
用户表和订单表的关系为:一个用户可以有多个订单,一个订单只能从属于一个用户
一对一查询需求:查询一个订单,同时查询出该订单所对应的用户
对应的sql语句: select * from orders o,user u where o.uid=u.id
查询结果如下:
id ordertime total uid id username password birthday 1 2022-03-17 17:15:33 3000 1 1 lucy 123 2022-03-17 17:15:56 2 2022-03-17 17:15:33 4000 1 1 lucy 123 2022-03-17 17:15:56 3 2022-03-17 17:15:33 5000 2 2 tom 123 2022-03-17 17:15:56
需求分析
具体实现
- User
/**
* 用户信息
*
* @name: User
* @author: terwer
* @date: 2022-05-08 17:41
*/
class User {
var id: Int? = null
var username: String? = null
override fun toString(): String {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
'}'
}
}
/**
* 用户信息
*
* @name: User
* @author: terwer
* @date: 2022-03-17 17:41
**/
public class User {
private Integer id;
private String username;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
'}';
}
}
- Order
/**
* 订单
*
* @name: Order
* @author: terwer
* @date: 2022-05-08 17:42
*/
class Order {
var id: Int? = null
var orderTime: String? = null
var total: Double? = null
// 代表当前订单属于哪一个用户
var user: User? = null
override fun toString(): String {
return "Order{" +
"id=" + id +
", orderTime='" + orderTime + '\'' +
", total=" + total +
", user=" + user +
'}'
}
}
/**
* 订单
*
* @name: Order
* @author: terwer
* @date: 2022-03-17 17:42
**/
public class Order {
private Integer id;
private String orderTime;
private Double total;
// 代表当前订单属于哪一个用户
private User user;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getOrderTime() {
return orderTime;
}
public void setOrderTime(String orderTime) {
this.orderTime = orderTime;
}
public Double getTotal() {
return total;
}
public void setTotal(Double total) {
this.total = total;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String toString() {
return "Order{" +
"id=" + id +
", orderTime='" + orderTime + '\'' +
", total=" + total +
", user=" + user +
'}';
}
}
/**
* 订单映射
*
* @name: IUserMapper
* @author: terwer
* @date: 2022-05-08 17:54
*/
interface OrderMapper {
/**
* 查询订单同时查询订单所属用户
* @return
*/
fun findOrderAndUser(): List?
}
/**
* 订单映射
*
* @name: IUserMapper
* @author: terwer
* @date: 2022-03-17 17:54
**/
public interface OrderMapper {
/**
* 查询订单同时查询订单所属用户
* @return
*/
public List findOrderAndUser();
}
select * from orders o,user u where o.uid=u.id
另外一种配置方法
select * from orders o,user u where o.uid=u.id
@Test
@Throws(IOException::class)
fun test1() {
val resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml")
val sqlSessionFactory = SqlSessionFactoryBuilder().build(resourceAsStream)
val sqlSession = sqlSessionFactory.openSession()
val orderMapper = sqlSession.getMapper(OrderMapper::class.java)
val orderList = orderMapper.findOrderAndUser()
for (order in orderList) {
println(order)
}
}
@Test
public void test1() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class);
List orderList = orderMapper.findOrderAndUser();
for (Order order : orderList) {
System.out.println(order);
}
}
文章更新历史
2022/05/08 feat:新增Kotlin支持Original: https://www.cnblogs.com/tangyouwei/p/mybatis-complex-mapping-development-one-to-one-query.html
Author: 灯塔下的守望者
Title: MyBatis复杂映射开发之一对一查询
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/570311/
转载文章受原作者版权保护。转载请注明原作者出处!