java+springmvc+vo,springmvc+mybatis的实例详解
前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十三)——SpringMVC入门程序(二)
1.需求
使用springmvc和mybatis完成商品列表查询。
2.整合思路
springmvc+mybatis的系统架构:
第一步:整合dao层
mybatis和spring整合,通过spring管理mapper接口。
使用mapper的扫描器自动扫描mapper接口在spring中进行注册。
第二步:整合service层
通过spring管理service接口。
使用配置方式将service接口配置在spring配置文件中。
实现事务控制。
第三步:整合springMvc
由于springmvc是spring的模块,不需要整合。
3.环境准备
数据库环境:mysql5.6
java环境:
jdk1.7
MyEclipse2014
springmvc版本:spring3.2
所需要的jar包:
数据库驱动包
mybatis的jar包
mybatis的spring的整合包
log4j包
dbcp数据库连接池包
spring3.2所有jar包
jstl包
过程结构目录:
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逆向工程
将生成的文件拷贝至工程中。
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
查询商品列表查询条件:
商品列表:
商品名称 | 商品价格 | 生产日期 | 商品描述 | 操作 |
${item.name } | ${item.price } | ${item.detail } | 修改 |
7.加载spring容器
将mapper、service、controller加载到spring容器中。
建议使用通配符加载上边的配置文件。
在web.xml中添加spring容器监听器,加载spring容器。
contextConfigLocation/WEB-INF/classes/spring/applicationContext-*.xml
org.springframework.web.context.ContextLoaderListener
8.商品查询调试
访问地址:http://localhost:8080/SpringMVC_MyBatis/queryItems.action
查询结果:
java+springmvc+vo,springmvc+mybatis的实例详解相关推荐
- java写exe程序实例,java实现可安装的exe程序实例详解
java实现可安装的exe程序实例详解 通过编写java代码,实现可安装的exe文件的一般思路: 1.在eclipse中创建java项目,然后编写java代码,将编写好的java项目导出一个.jar格 ...
- java线程和内核线程的,Java中内核线程理论及实例详解
1.概念 内核线程是直接由操作系统内核控制的,内核通过调度器来完成内核线程的调度并负责将其映射到处理器上执行.内核态下的线程执行速度理论上是最高的,但是用户不会直接操作内核线程,而是通过内核线程的接口 ...
- java中List的用法和实例详解
Java中List的用法和实例详解 List的用法 List包括List接口以及List接口的所有实现类.因为List接口实现了Collection接口,所以List接口拥有Collection接口提 ...
- java异常例子_java 异常的实例详解
java 异常的实例详解 1.异常的定义:程序在运行时出现不正常情况. 异常的划分: Error:严重的问题,对于error一般不编写针对性的代码对其进行处理. Exception:非严重的问题,对于 ...
- java asynchronize_Java 中synchronize函数的实例详解
Java 中synchronize函数的实例详解 java中的一个类的成员函数若用synchronized来修饰,则对应同一个对象,多个线程像调用这个对象的这个同步函数时必须等到上一个线程调用完才能由 ...
- mysql 超长 java 问题_MySql超长自动截断实例详解
MySql超长自动截断实例详解 小伙伴问到一个问题,为啥在项目中调用插入或者更新语句时超长的字无法自动截断,而在navicat中直接执行是可以自动截断的? 如下 CREATE TABLE `p_app ...
- java 自定义正则表达式_java中正则表达式实例详解
Java中正则表达式运用实例(参看java中正则表达式运用详解): 测试代码 package test; /** * 在String的matches()方法,split()方法中使用正则表达式. * ...
- java装饰模式_Java装饰者模式实例详解
本文实例讲述了Java装饰者模式.分享给大家供大家参考,具体如下: 装饰模式 在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象. 装 ...
- dsa的java实现_Java数字签名算法DSA实例详解
本文实例讲述了Java数字签名算法DSA.分享给大家供大家参考,具体如下: 一.介绍 DSS:Digital Signature Standard 数字签名标准 DSA:Digital Signatu ...
最新文章
- 22个案例详解 Pandas 数据分析/预处理时的实用技巧,超简单
- PlayMaker GUI的Normalized
- ORACLE下载当中的gateways,companion,clusterware都是什么用途?
- 单单表单独占一行_数据透视表→Alt+D+P?
- 信号传递的时机与顺序
- kafka架构组件概念详解:Broker、Topic、Partition、Leader/Follower、Consumer Group、zookeeper
- c语言 误差小于10 -6,上海理工大学C语言2011期中试题和答案
- lua的VS或者VC环境的搭建调试
- 计算机管理可以更新吗,微信可以批量管理好友吗(电脑版微信3.0.0更新规则了)...
- 为什么有的父母喜欢在子女之间,来回拨弄是非,使他们反目?
- 揭秘 IPython 的 5 种最佳调试方法
- 人力资源管理教程 HR自学视频教程
- python做生物信息学分析_Python从零开始第五章生物信息学⑤生存分析(log-rank)
- fc流量计算机参数,ELSTER Flow Computer enCore FC1 流量计算机
- 统计学(网易云可汗学院公开课笔记)
- 大二计算机学期总结报告,大二计算机的实训总结.docx
- 【Lerna 基本使用】
- 电脑桌面有HTML一直删除不了,程序员电脑桌面是什么样的? 网友: IE浏览器必删, 不能留!...
- 2.6 人工智能组件
- 详解element-ui设置下拉选择切换必填和非必填
热门文章
- MongoDB和Web应用程序
- Java EE CDI程序化依赖关系消歧示例–注入点检查
- JDK 8 Javadoc调整了方法列表
- Spring MVC:表单处理卷。 3 –复选框处理
- Spring 3.1缓存和配置
- IntelliJ IDEA for Mac在MacOS模式下的替换快捷键(Replace Shortcut)
- Servlet配置初始化参数/配置参数
- MacOS 的软件包管理工具 MacPorts
- Linux 如何安装 SRPM 包(源代码 rpm 软件包,以 .src.rpm 为后缀名)/rpm 格式的源码软件包/源码包
- python 正整数 连续多个数之和_vijos - P1302连续自然数和 (公式推导 + python)