springmvc-mybatis之一对多映射

SpringMVC实验一:简单查询:一对一、一对多查询 4.根据教材相关实列,向userInferMapper中写入sql语句,在test中写入测试方法。然后我们需要创建一个config目录来存放核心配置文件SqlMapConfig.xml。1.首先在src上创建po,database,mapper三个包。3.连接数据库,在po层里面创建相关实列。2.同时,我们需要在xml导入相关依赖。 阅读详情

1.首先来个需求

1.一个订单表和一个订单详情表,一个订单可以有多个订单详情,订单详情里面主要记录了购买商品的名称以及数量。那么,现在要查询一个订单的详细情况。也就是说这是一对多查询,从订单表里用其id查询订单详情表的所有记录。

2. 实现

2.1首先实现mepper.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">

<!-- 开发规范:  1.命名空间必须与包名一样  -->
<mapper namespace="com.ssm.mapping.OrderMapper">
    <!-- 查询一个订单以及订单详情
        一个订单可以有多个订单详情
        也就是一对多关系
     -->
     <!-- 
        定义resultmap
      -->
     <resultMap type="order" id="orderAndOrderDetail">
        <id column="id" property="id"/>
        <result column="user_id" property="user_id"/>
        <result column="number" property="number"/>
        <result column="create_time" property="create_time"/>
        <result column="note" property="note"/>
        <!--这里的id使用items_id标示不一样的商品详情-->
        <collection property="list" ofType="orderDetail">
            <id column="items_id" property="id"/>
            <result column="items_id" property="items_id"/>
            <result column="items_num" property="items_num"/>
        </collection>
     </resultMap>
     <select id="findOrderAndOrderDetail"  resultMap="orderAndOrderDetail">
        SELECT 
        orders.*,
        orderdetail.items_id,
        orderdetail.items_num
        FROM
          orders,
          orderdetail 
        WHERE orderdetail.orders_id = orders.id AND orders.id=3
     </select>
</mapper>

2.2实现mapper.java

package com.ssm.mapping;

import com.ssm.model.Order;

public interface OrderMapper {
    //一个订单可有多个订单详情函数名必须与mapper.xml中的id一致,
    public Order findOrderAndOrderDetail();

}

2.3实现springmvc的控制器

package com.ssm.controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.ssm.mapping.OrderMapper;
import com.ssm.model.Order;

@Controller
@RequestMapping("/order")
public class OrderController {
    //自动注入
    @Autowired
    private OrderMapper ordermapper;

    @RequestMapping(value="/findorder",method=RequestMethod.GET)
    public String findOrderAndOrderDetail(HttpServletRequest request)
    {
        Order order = ordermapper.findOrderAndOrderDetail();
        request.setAttribute("order", order);

        return "order_detail";
    }

}

2.4编写spring配置文件ordermapper生成实例,感觉这里应该有更好的方法实现,不然每次都要配置太麻烦,留着以后解决

<!-- 基于mapper代理的dao 开发不需要dao实现类   不能与原始dao接口开发一起使用  会造成原始的dao开发无法映射到相应的xml-->
    <bean id="ordermapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
        <!-- 构造方法需要两个参数sqlsessionfactory 与  mapperInterface -->
        <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
        <property name="mapperInterface" value="com.ssm.mapping.OrderMapper"></property>
    </bean>

    <!-- 页面处理器根据返回的字符串寻找jsp文件-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name = "prefix" value="/WEB-INF/views/"></property>
        <property name = "suffix" value = ".jsp"></property>
    </bean>

2.5jsp页面

 <body>
    <p>订单id:${requestScope.order.id}</p>
    <p>订单number:${requestScope.order.number}</p>
    <p>订单user_id:${requestScope.order.user_id}</p>
    <p>订单create_time:${requestScope.order.create_time}</p>
    <p>订单note:${requestScope.order.note}</p>
    <table border="1">
        <tr><th>商品id</th><th>商品数量</th></tr>
            <c:forEach items="${requestScope.order.list}" var="orderdetail">
                <tr>
                    <td>${orderdetail.items_id}</td>
                    <td>${orderdetail.items_num}</td>
                </tr>
            </c:forEach>
    </table>
  </body>

2.6如果需要使用mybatis的配置,如使用别名,那么加上mybatis的配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <typeAliases>
        <!-- 批量定义别名 别名为类名 首字母大小写均可-->
        <package name="com.ssm.model"/>
    </typeAliases>

</configuration>

以上,还有一些关于myeclipse调试快捷键
F5 --单步调试进入函数内部,注意使用,进入jar包内部就没必要了。
F6 --单步调试不进入函数内部,
F7 --由函数内部返回到调用处。
F8--一直执行到下一个断点。

SpringMVC Spring Mybatis整合步骤 一.配置mybatis   1.在pom.xml中导入mybatis3.4.5的依赖,导入mysql-connector-java-5.1.43      2.写mybatis-config-xml的配置文件,里面包含连接数据库的信息和映射文件   3.实体类和对应的映射文件(person,person.xml)   4.dao接口   5.写一个测试类测试mybatis是否可以使用 阅读详情

相关推荐

Spring+SpringMVC+Mybatis SSM框架详解

JDBC其实就是 Java 官方提供的一套规范(接口),用于帮助开发人员快速实现不同关系型数据库的连接。程序运行的时候,数据都是在内存中的。当程序终止的时候,通常都需要将数据保存到磁盘上,无论是保存到本地磁盘,还是通过网络保存到服务器上,最终都会将数据写入磁盘文件。而如何定义数据的存储格式就是一个大问题。

悦分享 3498

mybatis 多表查询 (一对多操作)

一对多操作,像是一个user类实例关联好几个account实例 如图,一个jack对应两个account 在User类中 加上一个account的集合 package com.qst.domain; import java.util.List; public class User { private Integer id; private String use...

从简的博客 1541

SpringMVC与MyBatis整合示例演示

本文还有配套的精品资源,点击获取 简介:SpringMVC和MyBatis是Web开发中重要的框架,分别担任控制层和数据访问层的角色。通过示例,本教程将展示如何将这两个框架结合,搭建一个基础Web应用。涉及SpringMVC处理HTTP请求、MyBatis操作数据库的详细过程,以及如何利用AJAX进行异步交互。提供的下载文件中包含配置文件、源代码和静态资源,旨在帮助开发者深...

weixin_28872035的博客 2660

Mybatis结果映射——一对多

我们知道 Mybatis 的结果映射,如果遇到实体类的属性是自定义,事情就不会那么简单。可能会有一对多,多对一,多对多的情况产生。本文讲解一下多对一的情况。 多对一,指的是 A 表的多行对应 B 表的某一行,就是 A 的多个实例对应 B 的一个实例。比如我们有一张博客表,表里记录了作者,题目,时间,阅读量等信息。还有一张读者表。表里记录了作者姓名、地址等信息。 Blog 表中的多条记录,对应了 Author 表中的一条记录,这就是多对一。...

pan2635376816的博客 1万+

使用Maven构建SpringMVC+Mybatis框架

Apache Maven是一个项目管理和自动构建工具,它基于项目对象模型(POM)的概念,通过一个中央信息管理单元来管理项目的构建、报告和文档。Maven的核心功能包括:项目构建:Maven可以自动化构建过程,如编译、测试、打包等。依赖管理:它自动下载和管理项目所需的库依赖。项目信息管理:Maven定义了一套标准的项目结构,方便团队协作。扩展机制:Maven插件架构允许用户自定义构建行为。

weixin_29009401的博客 998

Photoshop实战技巧(9)——高效去除复杂水印的五种进阶方法

本文详细介绍了Photoshop中高效去除复杂水印的五种进阶方法,包括色阶通道爆破法、频率分离高阶应用、智能填充+手动修复组合拳等专业技巧。针对半透明水印、密集文字水印等复杂场景,提供分步操作指南和实战案例,帮助用户精准去除水印同时保留原始图像细节,大幅提升工作效率。

cake8的博客 963

Mybatis 实现一对多

在数据库中,单表的操作是最简单的,但是在实际业务中最少也有十几张表,并且表与表之间常常相互间联系;一对多是最基础的表间关系,意思是一张表A中的一条记录可以对应另一张表B中的多条记录另一张表B中的一条记录只能对应一张表A中的一条记录,我们用学生和老师之间的关系来实现一对多。通过本次的学习,我们了解并掌握 Mybatis 实现一对多的方法,用一个 List 集合来返回我们的 Student 的对象,

sxzdkfjr的博客 4991

LVGL的基础知识总结

另外,还有自定义字库的使用,具体可参考开发手册。

qq_28576837的博客 7394

详解Mybatis一对多、多对一、多对多

Mybatis一对一、一对多、多对多

菜鸟逆袭之路 2万+

QGIS v3.28 高效加载OSM在线地图的三种实用方法

本文详细介绍了在QGIS v3.28中高效加载OSM在线地图的三种实用方法:通过XYZ Tiles直接连接、使用QuickMapServices插件以及配置WMS/WTMS服务。针对每种方法提供了具体操作步骤、常见问题解决方案和性能优化建议,帮助用户根据需求选择最适合的方案,提升GIS工作效率。

weixin_29233333的博客 435

GOM Correlate拉伸试验后处理操作

本文描述了使用GOM Software 2022对拉伸试样进行后处理的操作,包括设置检测点、引伸计、输出应变数据到表格、输出报告为视频等

qq_45008924的博客 4667

【SpringMvc】SpringMvc +MyBatis整理

MyBatis是什么, MyBatis和Hibernate区别, 自己实现MyBatis 底层机制了解MyBatis, 源码的debug, MyBatis注解, 动态SQL, 映射关系, MyBatis执行SQL的两种方式, 执行器随记, 缓存, 两个缓存的事, Ehcache

dandelionl_的博客 6843

无人机:DJI Matrice 200 Series_(13).行业应用案例分析

在前一节中,我们介绍了DJI Matrice 200系列无人机的基本硬件配置和性能参数。本节将通过具体的行业应用案例,分析如何利用DJI Matrice 200系列无人机进行二次开发,以满足不同行业的需求。

zhubeibei168的博客 1448

Spring SpringMvc Mybatis框架详解

SpringMVC 对springmvc的理解: 1.它基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是java组件,并且和spring提供的其他基础结构密集成. 2.不依赖Servlet API(目标虽是如此,但是在实现的时候确实是依赖于Servlet的) 3.可以任意使用各种视图技术 4.支持各种请求资源的映射策略. 5.易于扩展 SpringMVC的工作...

sky 8774

北斗导航 | 卫星导航接收机原理(基础)

卡尔曼滤波,最小二乘,伪距,芯片,模组,接收机,捕获,跟踪,RTK,RTD,PPP,SPP,多普勒,DOP,灵敏度,热启动,冷启动,PNT,北斗发展,MEO,IGSO,GEO,ICD,导航电文,载波,载噪比

尘世冰封的专栏 2343

ESP8266-Arduino网络编程实例-异步TCP客户端

本次实例将使用ESPAsyncTCP库实现一个简单的客户端。

视觉与物联智能 1741

Mybatis 、SpringMVC、Spring 介绍及联系

一、Mybatis 1、简介 MyBatis 是一个基于 Java 的持久层框架,是对 jdbc 的封装,它让数据库底层操作变的透明。Mybatis 的操作都是围绕一个 sqlSessionFactory 实例展开的。Mybatis 通过配置文件关联到各实体类的 Mapper 文件,Mapper 文件中配置了每个类对数据库所需进行的 sql 语句映射。在每次与数据库交互时,通过 sqlSessionFactory 拿到一个sqlSession,再执行 sql 命令。在 Mybatis 中,sqlSessio

木泽锐 5446

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

MyBatis+springMVC

MyBatis概述 MyBatis是一个支持普通SQL查询、存储过程以及高级映射的持久层框架,它消除了几乎所有的JDBC代码和参数的手动设置以及对结果集的检索,并使用简单的XML或注解进行配置和原始映射,用以将接口和Java的POJO(Plain Old Java Object,普通Java对象)映射成数据库中的记录,使得Java开发人员可以使用面向对象的编程思想来操作数据库。 什么是MyBatis MyBatis框架也被称为ORM(Object/ Relational Mapping,对象关系映射)框架。

weixin_44195615的博客 1661

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Spring+SpringMVC+Mybatis

ssm框架总结

qq_43905491的博客 1582

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SpringMVC是如何切入mybatis的

SqlSessionFactoryBean MapperScannerConfigurer 这两类是SpringMVVC和mybatis的切入类 1.MapperFactoryBean--String-mybatis下的,他用来生成dao的代理类MapperProxy<T>,下面是此类的部分代码 public class MapperProxy<T> implem...

吒哇 4041

Mybatis使用之SpringMVC整合

摘要: 主要记录Mybatis+SpringMVC最新版整合、补充部分有事务不起作用的原因说明。

Oscar Chen 3466

【SpringMVC】SpringMVC整合Mybatis

pom.xml 项目目录 3.整合步骤 1.dao层 目录结构 mybatis配置文件 spring配置文件 配置: 逆向工程生成po类及mapper(dao层) 方法参见 [《Mybatis Generator超详细配置》](…/Mybatis/Mybatis Generator超详细配置.md)针对综合查询mapper,一般情况会有关联查询,建议自定义mapperItemsMapperCustom.xml ItemsMapperCustom.java po类 输入pojo的包装类

Robin的博客 1417

Spring、SpringMVC、SpringBoot、Mybatis小结

Mybatis通过简单的xml或注解来配置和映射原生信息,将接口和Java的POJOs(Plain Old Java Objects)映射成数据库中的记录。MyBatis 是一个轻量级的持久层框架,通过简单的 XML 或注解配置,可以灵活地执行 SQL 语句,并将结果自动映射到 Java 对象。:基于Spring框架,通过自动配置和起步依赖简化应用开发,提供快速启动和生产就绪功能。:一个全面的企业级应用框架,提供依赖注入、AOP、事务管理等核心功能。:包含JDBC、ORM、OXM、JMS和事务管理等模块。

楠寻寻的博客 1227

Spring、SpringMVC、Mybatis 整合

Spring、SpringMVC、Mybatis 整合 文章目录Spring、SpringMVC、Mybatis 整合1、Pom.xml配置1.1 Maven依赖的导入1.2 静态资源导出配置2、Spring和Mybatis整合2.1 创建applicationContext.xml2.2 创建mybatis-config.xml2.3 创建database.properties2.4 创建spring-dao.xml3 SpringMVC层3.1 配置web.xml3.2 创建spring-mvc.xml

xiaoxiao66668的博客 1467

Spring+SpringMVC+MyBatis

1、为什么要使用 Spring?spring提供 ioc 技术,容器会帮你管理依赖的对象,从而不需要自己创建和管理依赖对象了,更轻松的实现了程序的解耦。spring提供了事务支持,使得事务操作变的更加方便。spring提供了面向切片编程,这样可以更方便的处理某一类的问题。更方便的框架集成,spring 可以很方便的集成其他框架,比如 MyBatis、hibernate 等。

qq_55636637的博客 1160
上一篇: mybatis之typealiases定义
下一篇: WifiManager
cst_code
博客等级 码龄10年 4粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值