前情提要请看JavaWeb学习之路——SSM框架之Spring(四)

                                        整合Spring和Mybatis框架

1.在项目的lib下导入如下jar包

导入mybatis所有jar和spring的jar基本包,spring-jdbc,spring-tx,spring-aop,spring整合mybatis等

2.编写spring配置文件applicationContext

在jar包下找到对应的类文件,复制它的类名,将之加入到对应的bean的Class属性中,下图为一个示例:

Spring xml文件配置数据库相关信息:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- id表示获取到对象标识class 创建哪个类的对象--><!-- 数据源封装类,相当于mybatis的environment标签,数据类在spring-jdbc包中 --><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/likui"/><property name="username" value="root"/><property name="password" value="123456"/></bean><!-- 在mybatis-spring包中 --><bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"></property></bean><!-- 扫描器,相当于mybatis下的mappers package标签 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.likui.mapper"></property><!-- 让factory与数据库相关联 --><property name="sqlSessionFactory" ref="factory"></property></bean></beans>

对应类:MapperScannerConfigurer->SqlSessionFactoryBean->DriverManagerDataSource,层层嵌套

3.使用流程

src下代码结构图:

1)在src下创建mapper包,里面是sql语句的使用方法

public interface FlowerMapper {@Select("select * from flower")List<Flower> selAll();}

2)在src下创建pojo包,里面是类的构造方法和setter、getter方法,用来封装对象

public class Flower {private int id;private String name;private double price;private String production;public void setList(List<Integer> list) {this.list = list;}public Flower(int id, String name, double price, String production) {this.id = id;this.name = name;this.price = price;this.production = production;}public Flower() {}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public String getProduction() {return production;}public void setProduction(String production) {this.production = production;}

3)创建service包,里面是工程项目的实现类,接口和它的实现类都放这里面

(1)接口

public interface FlowerService {List<Flower> show() throws IOException ;  //显示}

(2)实现类

public class FlowerServiceImpl implements FlowerService{private FlowerMapper flowermapper;public FlowerMapper getFlowermapper() {return flowermapper;}public void setFlowermapper(FlowerMapper flowermapper) {this.flowermapper = flowermapper;}@Overridepublic List<Flower> show() throws IOException {// TODO Auto-generated method stubreturn flowermapper.selAll();} }

4)在Spring的beans.xml中创建类的对象

注意对应的首字母为大写的类或接口在引用时需要将首字母小写,接口不能创建bean,因为不能实例化

<bean id="flowerService" class="com.likui.service.FlowerServiceImpl"><property name="flowermapper" ref="flowerMapper"></property></bean>

5)编写Test主函数来实现,在java文件中利用Spring IoC获取相应类对象

public class Test {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml");//获取所有spring管理的bean的名称//String []names=ac.getBeanDefinitionNames();//for(String string:names) {//   System.out.println(string);//}FlowerServiceImpl flowerServiceImpl=ac.getBean("flowerService",FlowerServiceImpl.class);List<Flower> list=flowerServiceImpl.show();System.out.println("id\t\tname\t\tprice\t\tproduction");for (Flower flower : list) {System.out.println(flower.getId()+"\t\t"+flower.getName()+"\t\t"+flower.getPrice()+"\t\t"+flower.getProduction());}}}

6)实验结果展示:

4.发布到Web项目上

因为Spring不能管理serverlet,需要用tomcat来管理它,利用tomcat提供的方法来支持Spring

1)在WEB-INF下新建web.xml配置文件。用于加载Spring的配置文件,获取到相应的contextConfigLocation

代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"><!-- 上下文参数 --><context-param><param-name>contextConfigLocation</param-name><!-- spring配置文件 --><param-value>classpath:beans.xml</param-value></context-param><!-- 封装了一个监听器,帮助加载Spring的配置文件 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener></web-app>

2)在src下新建serverlet包,里面写相应的serverlet实现方法

利用init初始化方法来实例化service中接口实现类,代码如下:

@WebServlet("/show")public class ShowServerlet extends HttpServlet{private FlowerService flowerservice;@Overridepublic void init() throws ServletException {// TODO Auto-generated method stub//对service实例化//ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml");//Spring不能管理serverlet对象,需要用tomacat来管理它,会封装它ApplicationContex ac=WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());flowerservice=ac.getBean("flowerService",FlowerServiceImpl.class);}@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// TODO Auto-generated method stubreq.setAttribute("list", flowerservice.show());req.getRequestDispatcher("/index.jsp").forward(req, resp);}}

3)在WebContent下新建index.jsp用于测试。

代码如下所示:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body>hello world!<table><tr><th>编号</th><th>名字</th><th>价格</th><th>产处</th></tr><c:forEach items="${list }" var="peo"><tr><td>${peo.id }</td><td>${peo.name }</td><td>${peo.price }</td><td>${peo.production }</td></tr></c:forEach></table></body></html>

4)实验结果:

JavaWeb学习之路——SSM框架之Spring(五)相关推荐

  1. JavaWeb学习之路——SSM框架之Spring(四)

    SSM框架学习-Spring01 1,.Spring介绍 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同 ...

  2. JavaWeb学习之路——SSM框架之Spring(六)

    AOP:面向切面编程 1.介绍--AOP:面向切面编程.正常程序都是从上到下执行相关代码,aop是在纵向执行流程中添加横切面, 从左到右的关系.不需要修改成语原有代码,它将代码动态的切入到类的指定方法 ...

  3. JavaWeb学习之路——SSM框架之SpringMVC(八)

    SpringMVC参数传递:把内容写到方法(HandlerMethod)参数中,SpringMVC只要有这个内容,则会注入,在这里使用注解的方式来传递参数 前提使用springmvc注解功能,相应配置 ...

  4. JavaWeb学习之路——SSM框架之Mybatis(三)

    数据库配置和相关类创建看上篇:JavaWeb学习之路--SSM框架之Mybatis(二) https://blog.csdn.net/kuishao1314aa/article/details/832 ...

  5. JavaWeb学习之路——SSM框架之SpringMVC(七)

    Spring MVC: 简介:SpringMVC是一种基于Java,实现了Web MVC设计模式,请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将Web层进行职责解耦.基于请求驱动指的 ...

  6. JavaWeb学习之路——SSM框架之Mybatis(二)

    1.简介: 框架: 是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架.前者是从应用方面而后者是从目的方面给出的定义.它是一个半 ...

  7. JavaWeb学习之路——SSM框架之SpringMVC(九)

    SpringMVC跳转.视图解析器和@ResponseBody的用法 1.跳转方式 (1)默认方式字符串内容来转发 (2)设置返回值内容转发 添加redirect:资源路径·  重定向 添加forwa ...

  8. SSM框架:Spring

    SSM框架:Spring 文章目录 前言 一.Spring 1. 简介 2. 优点 3. 组成 4. 拓展 二.IOC理论推导 1. IOC原型引入 2. IOC本质(基本思想) 三.HelloSpr ...

  9. 超详细整合SSM框架--(Spring + Spring MVC + MyBatis)

    超详细整合SSM框架--(Spring + Spring MVC + MyBatis) SpringMVC框架--文章跳转 Spring框架--文章跳转 Mybatis框架--文章跳转 整合思路 设计 ...

最新文章

  1. 关于CLSCompliant
  2. Flex 布局教程:实例篇
  3. 关于流水线中剪裁的疑问
  4. 基于Vue开发一个日历组件
  5. 百姓大药房JAVA面试_「老百姓大药房面试|面试题」-看准网
  6. 2 . 8 注释和嵌入文档
  7. 测试用例编号_如何编写一个规范的测试用例?你应该知道的!
  8. Express框架学习笔记-模板引擎
  9. html vba 单元格 格式,VBA设置单元格格式之——边框
  10. 上海行政区划经纬度地图_全国行政区划2017省市区完整版附经纬度及拼音
  11. 大数据技术框架有哪些类型?大数据技术栈包括哪些框架?
  12. 百度谷歌搜索引擎索引
  13. Python爬虫实现无限刷不背单词app的酷币!很有意思!
  14. QQ快速登录协议的分析与漏洞利用
  15. 用rtl8139网卡制作的bios编程器(不用并口)
  16. Java编写一个公司员工类
  17. 在office中插入特殊符号方框带√
  18. java计算机毕业设计线上文具销售系统源程序+mysql+系统+lw文档+远程调试
  19. cc.game对象和游戏启动流程
  20. 利用opencv进行图像处理,提取椭圆圆心处理

热门文章

  1. esxi虚拟化集群_ProxmoxVE 之集群安装(V5.2)
  2. matlab 里的mod,matlab中mod()函数究竟有什么用?具体的作用(不要告诉我怎么算,我只想知道他有什么用)...
  3. 困难动态规划系列、经典的正则表达式和通配符匹配问题(难题)
  4. 为了OFFER系列 | 牛客网美团点评数据分析刷题
  5. Kaggle入门五大步,跟着做就对了
  6. 中文NER任务实验小结:BERT-MRC的再优化
  7. COLING 2020 | CharBERT:字符敏感的预训练语言模型
  8. 浅谈零样本网络表示学习
  9. 亚马逊高级应用科学家熊元骏:人类行为理解研究进展 | 直播实录·PhD Talk
  10. 数学建模公选课第二节常微分方程2020.4.10-.12补(钉钉)