Mybatis快速入门(3)resultType(输出类型)一对一关联映射,一对多关联映射(1)

文章详细展示了如何在MyBatis中进行单元测试,涉及动态SQL、一对一关联查询和ResultMap的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?xml version="1.0" encoding="UTF-8" ?>

SELECT

id,

user_id userId,

number,

createtime,

note

FROM order

(3)创建单元测试包OrderMapperTest

在这里插入图片描述

package com.itzheng.mybatis.test;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.junit.Test;

import com.itzheng.mybatis.mapper.OrderMapper;

import com.itzheng.mybatis.pojo.Order;

import com.itzheng.mybatis.utils.SqlSessionFactoryUtils;

public class OrderMapperTest {

@Test

public void testGetOrderList() {

SqlSession openSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();

//获取OrderMapper代理实现

OrderMapper ordermapper = openSession.getMapper(OrderMapper.class);

List list = ordermapper.getOrderList();

for (Order order : list) {

System.out.println(order);

}

openSession.close();

}

}

运行测试

在这里插入图片描述

4、resultMap

(1)修改OrderMapper.xml添加

在这里插入图片描述

SELECT

id,

user_id,

number,

createtime,

note

FROM order

(2)在OrderMapper接口当中创建getOrderListMap方法

在这里插入图片描述

List getOrderListMap();

测试运行

在这里插入图片描述

5、动态sql-if标签的使用(条件查询)

(1)修改UserMapper.xml

在这里插入图片描述

SELECT

id,

username,

birthday,

sex,

address

FROM user

WHERE 1 = 1

and username LIKE ‘%${username}%’

and sex = #{sex}

(2)在接口当中创建对应的方法

在这里插入图片描述

List getUserByPojo(User user);

(3)UserMapperTest当中创建对应的testGetUserByPojo方法

在这里插入图片描述

@Test

public void testGetUserByPojo() {

SqlSession openSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();

// 获取接口的代理实现类

UserMapper userMapper = openSession.getMapper(UserMapper.class);

User user = new User();

user.setSex(“1”);

user.setUsername(“张”);

List userByPojo = userMapper.getUserByPojo(user);

for (User user2 : userByPojo) {

System.out.println(user2);

}

openSession.close();

}

运行测试

在这里插入图片描述

6、动态sql-sql片段的使用

(1)抽取SQL片段

在这里插入图片描述

id,

username,

birthday,

sex,

address

(2)引用sql片段的id

在这里插入图片描述

SELECT

FROM

USER WHERE id = #{id1}

(3)运行测试代码

在这里插入图片描述

7、sql-foreach标签的使用:

(1)修改QueryVo类

在这里插入图片描述

(2)修改UserMapper.xml

在这里插入图片描述

SELECT

FROM user

WHERE id IN(1,25,29,30,35)

运行测试代码

在这里插入图片描述

8、(方式一)一对一关联查询

(1)创建OrderUser

在这里插入图片描述

package com.itzheng.mybatis.pojo;

/*

  • 订单关联用户信息的pojo

*/

public class OrderUser extends Order {

private String username;// 用户姓名

private String address;// 地址

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

@Override

public String toString() {

return “OrderUser [username=” + username + “, address=” + address + “, getUsername()=” + getUsername()

  • “, getAddress()=” + getAddress() + “, getId()=” + getId() + “, getUserId()=” + getUserId()

  • “, getNumber()=” + getNumber() + “, getCreatetime()=” + getCreatetime() + “, getNote()=” + getNote()

  • “, toString()=” + super.toString() + “, getClass()=” + getClass() + “, hashCode()=” + hashCode()

  • “]”;

}

}

(2)修改OrderMapper.xml

在这里插入图片描述

SELECT

o.id,

o.user_id userId,

o.number,

o.createtime,

o.note,

u.username,

u.address

FROM

order o

LEFT JOIN user u

ON u.id = o.user_id

(3)OrderMapper接口当中创建getOrderUser方法

在这里插入图片描述

/*

  • 一对一关联:resultType使用

*/

List getOrderUser();

(4)OrderMapperTest当中编写测试方法testGetOrderUser

在这里插入图片描述

@Test

public void testGetOrderUser() {

SqlSession openSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();

//获取OrderMapper代理实现

OrderMapper ordermapper = openSession.getMapper(OrderMapper.class);

List orderUser = ordermapper.getOrderUser();

for (OrderUser orderUser2 : orderUser) {

System.out.println(orderUser2);

}

openSession.close();

}

运行测试代码

在这里插入图片描述

9、(方式一)一对一关联查询:ResultMap:一个订单只有一个人

(1)修改Order

在这里插入图片描述

private User user;

public User getUser() {

return user;

}

public void setUser(User user) {

this.user = user;

}

(2)修改OrderMapper.xml在这里插入图片描述

在这里插入图片描述

SELECT

o.id,

o.user_id userId,

o.number,

o.createtime,

o.note,

u.username,

u.address,

u.birthday,

u.sex

FROM

order o

LEFT JOIN user u

ON u.id = o.user_id

(3)在OrderMapper接口当中编写getOrderUserMap方法

在这里插入图片描述

/*

  • 一对一关联:ResultMap使用

*/

List getOrderUserMap();

难道这样就够了吗?不,远远不够!

提前多熟悉阿里往年的面试题肯定是对面试有很大的帮助的,但是作为技术性职业,手里有实打实的技术才是你面对面试官最有用的利器,这是从内在散发出来的自信。

备战阿里时我花的最多的时间就是在学习技术上,占了我所有学习计划中的百分之70,这是一些我学习期间觉得还是很不错的一些学习笔记

我为什么要写这篇文章呢,其实我觉得学习是不能停下脚步的,在网络上和大家一起分享,一起讨论,不单单可以遇到更多一样的人,还可以扩大自己的眼界,学习到更多的技术,我还会在csdn、博客、掘金等网站上分享技术,这也是一种学习的方法。

今天就分享到这里了,谢谢大家的关注,以后会分享更多的干货给大家!

阿里一面就落马,恶补完这份“阿里面试宝典”后,上岸蚂蚁金服

阿里一面就落马,恶补完这份“阿里面试宝典”后,上岸蚂蚁金服

image.png

JOIN user u

ON u.id = o.user_id

(3)在OrderMapper接口当中编写getOrderUserMap方法

在这里插入图片描述

/*

  • 一对一关联:ResultMap使用

*/

List getOrderUserMap();

难道这样就够了吗?不,远远不够!

提前多熟悉阿里往年的面试题肯定是对面试有很大的帮助的,但是作为技术性职业,手里有实打实的技术才是你面对面试官最有用的利器,这是从内在散发出来的自信。

备战阿里时我花的最多的时间就是在学习技术上,占了我所有学习计划中的百分之70,这是一些我学习期间觉得还是很不错的一些学习笔记

我为什么要写这篇文章呢,其实我觉得学习是不能停下脚步的,在网络上和大家一起分享,一起讨论,不单单可以遇到更多一样的人,还可以扩大自己的眼界,学习到更多的技术,我还会在csdn、博客、掘金等网站上分享技术,这也是一种学习的方法。

今天就分享到这里了,谢谢大家的关注,以后会分享更多的干货给大家!

[外链图片转存中…(img-hhDrlj1r-1714420670169)]

[外链图片转存中…(img-eDsQTOUf-1714420670170)]

[外链图片转存中…(img-NCUQ88ZQ-1714420670170)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值