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,一经查实,立即删除!

相关文章

java是面向过程的编程语言吗,下列关于Java语言特点的叙述中,错误的是()。 A.Java是面向过程的编程语言B.Java支持分...

查询最近30天的记录应使用( )作为准则某企业年度主营业务收入为以下关于第一层ISP特征的描述中,错误的是测量电压时&#xff0c;应将数字万用表与被测电路并联。()HLAⅡ类分子主要分布于在铁碳合金相图中今年来,公务员逐渐成为广大高校毕业生所青睐的热门职业,但是报考公务员必…

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

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

ecshop 模板 php代码,ecshop无法在模板文件.dwt和.lbi中直接添加php代码的解决方法...

ecshop不能在模板文件.dwt和.lbi中直接添加php代码了&#xff0c;为什么呢&#xff1f;因为直接在模板中加入php函数和代码&#xff0c;没有经过过滤&#xff0c;容易造成安全隐患。程序源码安全是比较重要的。不过如果有朋友希望能在模板文件中直接加入.dwt和.lbi文件&#xf…

php mail 在线,在线web e-mail发送

名称&#xff1a;CJ Web2Mail V3.0说明&#xff1a;很多网站的“Contact Us ”打开的是outlook,但很多人没装。本人提供的是web发。可以给管理员发信的人自动发一封确认信&#xff0c;同时管理员也可以收到一封&#xff01;演示&#xff1a;http://phptext.512j.com(左下角的“…

jstl视图_使用JSTL视图探索Spring Controller

jstl视图让我们通过对Spring MVC的Controller开发的更多探索来改进我们以前的Spring JDBC应用程序 。 我将展示另一种编写新的Controller的练习&#xff0c;该Controller处理HTML表单并在JSP视图页面中使用JSTL标签。 要在Spring MVC应用程序中启用JSTL&#xff0c;您需要将以…

php5.6 连接 oracle,XAMPP中PHP5.6.3连接Oracle

系统环境&#xff1a;Windows 8.1 x64PHP 5.6.3 x86Apache/2.4.10 (Win32)Oracle Database 11g Enterprise Editionxampp-win32-5.6.3-0-VC11-installer.exe 这个版本很坑爹… 在 php.ini 中只有extensionphp_oci8.dll ; Use with Oracle 10gR2 Instant Clientextensionphp_oci…

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

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

electronjs MySQL,javascript – 在Electron应用程序中使用sql.js.

我是Electron的新手.它非常棒,而且入门非常有趣而且非常简单.一段时间以来,我一直试图找到一个在我的应用程序中使用的“数据库”解决方案.当然有Web SQL /本地存储选项,但我试图使用SQLite.我找到了sql.js,它很棒且易于使用.我可以让一切正常运行放我无法保存/更新数据库文件&…

php ajax mysql 出错,MySql + PHP + Ajax的乱码问题的解决方案

现如今&#xff0c;基本的web2.0应用都会涉及到表现层、业务层、数据层等多个层次。在数据的来回传递中&#xff0c;新手一不注意就会产生汉字的乱码问题。汉字乱码主要是由于各层使用的编码、或在层间进行数据传输时使用的编码不一致造成的&#xff0c;釜底抽薪的解决办法就是…

读取csv文件 java_Java:逐步读取/流式传输CSV文件

读取csv文件 java我一直在做一些涉及读取CSV文件的工作&#xff0c;而我一直在使用OpenCSV &#xff0c;而我的最初方法是逐行读取文件&#xff0c;解析内容并将其保存到地图列表中。 当文件的内容适合内存时&#xff0c;此方法有效&#xff0c;但对于较大的文件来说是个问题&…

php+数组转换函数是,php数组与字符串的转换函数大全

4.在字符串种中查找另外一个字符使用strpos()或strstr()函数strpos() 函数返回字符串在另一个字符串中第一次出现的位置。如果没有找到该字符串&#xff0c;则返回 false。语法&#xff1a;//string为必须&#xff0c;表示被搜索的字符串//find为必须&#xff0c;表示被查找的字…

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

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

matlab sym转str,sym struct 转换

描述&#xff1a;用 sym() 生成了 矩阵&#xff1b; 再用 solve() 结果返回 结构体&#xff0c;还带sym 型。。。尝试&#xff1a;用 struct 转换 ; eval() 什么的 都无解&#xff0c;&#xff0c; (结构体还带sym。。。。昏了)求&#xff1a;怎…

php $r,PHP

本文实例为大家分享了php微信跳一跳的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 ?php require config.php; function similar($rgb1, $rgb2) { $r1 ($rgb1 16) $g1 ($rgb1 8) $b1 $rgb1 $r2 ($rgb2 16) $g2 ($rgb2 8) $b2 $rgb2 return abs($r1 - $r2) 1…

java 字符串对齐_最佳字符串对齐的Java实现

java 字符串对齐有一阵子&#xff0c;我使用了Levenshtein distance的Apache Commons lang StringUtils实现。 它实现了一些众所周知的技巧&#xff0c;通过仅挂接到两个数组而不是为备忘录表分配巨大的nxm表来使用较少的内存。 它还仅检查宽度为2 * k 1的“条带”&#xff0c;…

zabbix可以监控什么php,zabbix监控php

通过启用php-fpm的status页面&#xff0c;使用zabbix来获取各数据参数以达到监控php-fpm性能状态php-fpm配置配置文件php-fpm.confpm.status_path /fpmstatusping.path /fpmpingping.response pongnginx配置在配置的server内添加locationlocation ~ ^/(fpmstatus|fpmping) {…

建立无服务器的“ 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…

Oracle12如何重装,Oracle怎么重新安装?

实现方法&#xff1a;1、 开始&#xff0d;&#xff1e;设置&#xff0d;&#xff1e;控制面板&#xff0d;&#xff1e;管理工具&#xff0d;&#xff1e;服务 停止所有Oracle服务。2、 开始&#xff0d;&#xff1e;程序&#xff0d;&#xff1e;Oracle - OraHome81&#xff…

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

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