java+springmvc+vo,springmvc+mybatis的实例详解

前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十三)——SpringMVC入门程序(二)

1.需求

使用springmvc和mybatis完成商品列表查询。

2.整合思路

springmvc+mybatis的系统架构:

a373ce44b3245c18b92d84221daaedcd.png

第一步:整合dao层

mybatis和spring整合,通过spring管理mapper接口。

使用mapper的扫描器自动扫描mapper接口在spring中进行注册。

第二步:整合service层

通过spring管理service接口。

使用配置方式将service接口配置在spring配置文件中。

实现事务控制。

第三步:整合springMvc

由于springmvc是spring的模块,不需要整合。

3.环境准备

数据库环境:mysql5.6

98095baff4dfc160eaa1fdd20dbd5a1f.png

java环境:

jdk1.7

MyEclipse2014

springmvc版本:spring3.2

所需要的jar包:

数据库驱动包

mybatis的jar包

mybatis的spring的整合包

log4j包

dbcp数据库连接池包

spring3.2所有jar包

jstl包

过程结构目录:

5625305444f7adf0fd17ef1e0279ca3e.png

e53050e683ca24f67d0ad39ef310ac77.png

4.整合dao

mybatis和spring进行整合。

4.1 db.properties

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/mybatisdemo

jdbc.username=root

jdbc.password=

4.2 log4j.properties

# Global logging configuration,建议开发环境要用debug

log4j.rootLogger=DEBUG, stdout

# Console output...

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

4.3 sqlMapConfig.xml

在classpath下创建mybatis/sqlMapConfig.xml。

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

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

4.4 applicationContext-dao.xml

在classpath下创建spring/applicationContext-dao.xml。配置:数据源、事务管理、SqlSessionFactory、mapper扫描器。

4.5逆向工程生成po类及mapper(即单表增删改查)

详情见:Spring+SpringMVC+MyBatis深入学习及搭建(十)——MyBatis逆向工程

569b352f4c9e592ff95b543daa7380f3.png

将生成的文件拷贝至工程中。

4.6手动定义商品查询mapper

针对综合查询mapper,一般情况会有关联查询,建议自定义mapper。

4.6.1 ItemsMapperCustom.xml

sql语句:

SELECT * FROM items WHERE items.name LIKE '%笔记本%'

<?xml version="1.0" encoding="UTF-8" ?>items.name LIKE '%${itemsCustom.name}%'

resultType="joanna.yan.ssm.po.ItemsCustom">SELECT items.* FROM items

4.6.2 ItemsMapperCustom.java

public interface ItemsMapperCustom {//商品查询列表public List findItemsList(ItemsQueryVo itemsQueryVo) throws Exception;

}

5.整合service

让spring管理service接口。

5.1定义service接口

package joanna.yan.ssm.service;import java.util.List;import joanna.yan.ssm.po.ItemsCustom;import joanna.yan.ssm.po.ItemsQueryVo;public interface ItemsService {//商品查询列表public List findItemsList(ItemsQueryVo itemsQueryVo) throws Exception;

}

package joanna.yan.ssm.service.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import joanna.yan.ssm.mapper.ItemsMapperCustom;import joanna.yan.ssm.po.ItemsCustom;import joanna.yan.ssm.po.ItemsQueryVo;import joanna.yan.ssm.service.ItemsService;public class ItemsServiceImpl implements ItemsService{

@Autowiredprivate ItemsMapperCustom itemsMapperCustom;

@Overridepublic List findItemsList(ItemsQueryVo itemsQueryVo)throws Exception {//通过ItemsMapperCustom查询数据库return itemsMapperCustom.findItemsList(itemsQueryVo);

}

}

5.2在spring容器配置service(applicationContext-service.xml)

在classpath下创建spring/applicationContext-service.xml,文件中配置service。

5.3事务控制(applicationContext-transaction.xml)

在classpath下创建spring/applicationContext-service.xml,文件中使用spring声明式事务控制方法。

6.整合springmvc

6.1 springmvc.xml

在classpath下创建spring/springvc.xml文件,配置处理器映射器、适配器、视图解析器。

6.2配置前端控制器

参考入门程序:Spring+SpringMVC+MyBatis深入学习及搭建(十二)——SpringMVC入门程序(一)

在web.xml中配置:

SpringMVC_MyBatis

index.jsp

springmvcorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:spring/springmvc.xml1

springmvc*.action

6.3编写Controller(就是Handler)

@Controllerpublic class ItemsController {

@Autowiredprivate ItemsService itemsService;//商品查询http://localhost:8080/SpringMVC_MyBatis/queryItems.action@RequestMapping("/queryItems")public ModelAndView queryItems() throws Exception{//调用service查找数据库,查询商品列表List itemsList=itemsService.findItemsList(null); //返回ModelAndViewModelAndView modelAndView=new ModelAndView();

modelAndView.addObject("itemsList", itemsList);//指定视图// modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");//下边的路径,如果在视图解析器中配置jsp路径的前缀和jsp路径的后缀,修改为modelAndView.setViewName("items/itemsList");return modelAndView;

}

}

6.4编写jsp

eb9b3bbc0c04886fe3811f7668dd6d21.png

查询商品列表查询条件:
商品列表:
商品名称商品价格生产日期商品描述操作
${item.name }${item.price }${item.detail }修改

7.加载spring容器

将mapper、service、controller加载到spring容器中。

5b25ed1abf32a8d5603f3e76fc2c1e2e.png

建议使用通配符加载上边的配置文件。

在web.xml中添加spring容器监听器,加载spring容器。

contextConfigLocation/WEB-INF/classes/spring/applicationContext-*.xml

org.springframework.web.context.ContextLoaderListener

8.商品查询调试

访问地址:http://localhost:8080/SpringMVC_MyBatis/queryItems.action

查询结果:

12f994b2daa4ef7817d67004ef4f1624.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346050.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

了解为什么这个直观的工具是您团队的通用团队管理工具

每个项目管理工具都试图做同样的工具性工作&#xff1a;保持团队联系&#xff0c;按任务执行和按时完成重大计划。 但是市场变得非常拥挤&#xff0c;并且有充分的理由-没有平台似乎对人们需要看的东西以及应该如何显示这些信息具有正确的感觉&#xff0c;以便它们既可行又相关…

模型服务:流处理与使用Java,gRPC,Apache Kafka,TensorFlow的RPC / REST

机器学习/深度学习模型可以通过不同的方式进行预测。 我的首选方法是将分析模型直接部署到流处理应用程序&#xff08;如Kafka Streams或KSQL &#xff09;中。 您可以例如使用TensorFlow for Java API 。 这样可以实现最佳延迟和外部服务的独立性。 在我的Github项目中可以找到…

拥抱模块化Java平台:Java 10上的Apache CXF

Java 9版本终于将Project Jigsaw交付给大众已经过去了一年多的时间。 这是一段漫长的旅程&#xff0c;但是在那里&#xff0c;所以发生了什么变化&#xff1f; 这是一个很好的问题&#xff0c;答案并不明显和直接。 总的来说&#xff0c; 拼图项目是一种颠覆性的变化&#xff…

建立无服务器的“ Hello World”功能

无服务器 &#xff0c;功能即服务&#xff08;FaaS&#xff09;或仅具有云功能&#xff0c;就可以编写将在云中运行的代码。 您可以使用多种不同的语言&#xff08;例如JavaScript&#xff08;Node.js&#xff09;&#xff0c;Swift&#xff0c;Python&#xff0c;Java&#xf…

oracle 10g 分区管理,Oracle 10g分区表的自动维护

Oracle 10g分区表不支持自动化管理&#xff0c;一般都要手动创建分区&#xff0c;手动删除。今天给大家带来了一个自动化管理表空间的脚本。本脚本主要由3个部分组成&#xff1a;sys_ConfigTable.sql、sys_pro_AddAndDropPartition.sql、sys_pro_MergeTable.sql1、sys_ConfigTa…

java实现metro风格_Metro风格的Java组合框(JMetro)–重新介绍

java实现metro风格我上一篇关于JMetro的文章–我的都市风格的Java皮肤&#xff08;或外观&#xff09;是关于日历选择器控件的 。 我本打算使用Tom Eugelink不错的日历选择器&#xff0c;但当时我了解到它是由Oracle创建并随Java 8一起提供的&#xff0c;因此出于时间的考虑&am…

toad查看oracle的plsql包,Oracle logminer 分析redo log(TOAD与PLSQL)

Oracle logminer 分析redo logOracle 11g r2 RAC centos 6.5设置时间格式select to_char(sysdate,yyyy-mm-dd hh24:mi:ss) date_format from dual ;查看数据库是否开启补全日志功能selectSUPPLEMENTAL_LOG_DATA_MIN,SUPPLEMENTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UI,SUPPLEM…

Nutshell中的Java 8语言功能-第2部分

编者注&#xff1a;您也可以在此处检查Part-1。 嗨&#xff0c;朋友们&#xff0c;这是简明系列的Java 8语言功能的第2部分。 在这里&#xff0c;我们将讨论Java 8的以下功能&#xff1a; 接口中的静态方法 流 1.接口中的静态方法 什么是静态方法&#xff1f; 静态方法是属…

梯度下降法、最速下降法

梯度下降法 最优化问题是求解函数极值的问题&#xff0c;包括极大值和极小值。相信所有的读者对这个问题都不陌生&#xff0c;在初中时我们就学会了求解二次函数的极值&#xff08;抛物线的顶点&#xff09;&#xff0c;高中时学习了幂函数&#xff0c;指数函数&#xff0c;对…

超越函数

代数数 在数论中&#xff0c;超越数是指任何一个不是代数数的数字&#xff08;通常它是复数&#xff09;。它满足以下条件——只要它不是任何一个整系数代数方程的根&#xff0c;它即是超越数。最著名的超越数是e以及π。 超越数 超越数的例子 所有超越数构成的集是一个不可数…

只需5分钟即可启动并运行分层架构:: Spring Boot第1部分

这是一个分为两部分的系列&#xff0c;其中我将展示如何使用Spring Boot创建分层架构。 什么是分层体系结构&#xff1a;简而言之&#xff0c;当我们构建企业应用程序时&#xff0c;我们维护不同的层以封装特定于层的逻辑&#xff0c;这样就不会溢出到另一层。 当我们考虑企业…

linux设置默认的首页文件,Linux 设置Firefox主页

Linux 设置Firefox主页在Linux系统中&#xff0c;当用户启动Firefox主页时&#xff0c;会自动打开Firefox默认设置的主页。当然&#xff0c;用户也可以通过Firefox的首选项&#xff0c;手动将Firefox主页设置为自己喜欢的或经常访问的网页。在本单元练习中&#xff0c;将Firefo…

向量范数与矩阵范数

一、向量的范数 1.1 定义 1.2 举例 首先定义一个向量为&#xff1a;a[-5&#xff0c;6&#xff0c;8, -10] 1.2.1 向量的1范数 向量的1范数即&#xff1a;向量的各个元素的绝对值之和&#xff0c;上述向量a的1范数结果就是&#xff1a;29&#xff0c;MATLAB代码实现为&…

苹果linux桌面文件夹,Ubuntu 10.04下一键安装Mac OS X主题桌面

不久前的《Ubuntu 10.04下Mac OS X风格桌面美化安装》遭到网友的砖头&#xff0c;认为和Mac OS X风格桌面美化安装根本没有关系。本来是要跟这篇一起发布的&#xff0c;一等就等了这么长&#xff0c;下面我们来看下在Ubuntu 10.04下一键安装Mac OS X主题桌面的工具Epidermis th…

示性函数、共轭函数、对偶范数、共轭

示性函数(Indicator function) 共轭函数 对偶范数 几个常用公式 共轭&#xff08;conjugate&#xff09; 所谓“轭”&#xff0c;指的是古代牛车上放在并行的牛脖颈上的曲木。共轭关系&#xff0c;通俗来说一般用以描述两件事物以一定规律相互配对或孪生&#xff08;一般共轭对…

Redis-实践知识

转自极客时间Redis 亚风 原文视频&#xff1a;https://u.geekbang.org/lesson/535?article681062 Redis最佳实践 普通KEY Redis 的key虽然可以自定义&#xff0c;但是最好遵循下面几个实践的约定&#xff1a; 格式&#xff1a;[业务名称]:[数据名]:[id] 长度不超过44字节 不…

MicroProfile OpenAPI上的Swagger UI

MicroProfile OpenApi为我们提供了一种使用OpenApi 3描述我们JAX-RS API的标准化方法。如果您以前使用过swagger-jaxrs和swagger-annotations &#xff0c;由于OpenApi是基于Swagger构建的&#xff0c;因此您会感到非常熟悉。 2015年11月5日&#xff0c;SmartBear与3Scale&…

linux 跟踪内存,用strace跟踪malloc内存分配

strace介绍strace是一个非常有用的命令&#xff0c;它用于记录和跟踪程序运行期间收到的信号和调用的系统调用。strace的简单使用ubuntu64:~$ strace cat /dev/nullexecve("/bin/cat", ["cat", "/dev/null"], [/* 32 vars */]) 0brk(NULL) 0x1…

归一化、标准化和正则化

归一化 Normalization 归一化一般是将数据映射到指定的范围&#xff0c;用于去除不同维度数据的量纲以及量纲单位。 常见的映射范围有 [0, 1] 和 [-1, 1] &#xff0c;最常见的归一化方法就是 Min-Max 归一化&#xff1a; 举个例子&#xff0c;我们判断一个人的身体状况是否健…