SpringMVC整合mybatis(附源码)
来源:互联网 发布:拍网络电影多少钱 编辑:程序博客网 时间:2024/05/08 09:25
SpringMvc作为一个轻量级的web框架,现在变得越来越流行了,同时mybatis也因为可控性越来越受开发者的青睐,下面我就向初学者简单介绍一些如何进行springmvc和mybatis的整合。
一 、组件介绍
SpringMVC
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
MyBatis
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
二、项目架构搭建
下面我们进行一个简单的hello name的简单项目搭建。
项目是在eclipse中开发的,采用maven进行项目管理。
首先我们新建一个maven项目,并建立一下的项目结构。
这里的包名可以根据自己的习惯进行分类,配置文件是为了方便书写而特意按功能进行分来的。
然后新建一个数据库test,下面是数据表和测试数据的sql语句
/*Navicat MySQL Data TransferSource Server : chenSource Server Version : 50505Source Host : localhost:3306Source Database : testTarget Server Type : MYSQLTarget Server Version : 50505File Encoding : 65001Date: 2017-01-02 16:30:06*/SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `mytable`-- ----------------------------DROP TABLE IF EXISTS `mytable`;CREATE TABLE `mytable` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;-- ------------------------------ Records of mytable-- ----------------------------INSERT INTO `mytable` VALUES ('1', 'chen');
我们的项目需要做的就是,利用mybatis从数据库中读出name=chen,并输出hello chen,这个项目很简单,但是对于初学者学习如何进行框架整合和入门是有很好的启示作用的,下面我们进行项目的开发吧。
三、hello name实现
上面一节的项目架构搭建完成后,下面我们进行项目的实现。
1. pom.xml 编写
这里引入两个框架需要的jar包和一些常用的jar包
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.chen</groupId> <artifactId>SpringMvc</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <properties> <spring.version>4.1.1.RELEASE</spring.version> <junit.version>4.11</junit.version> <mybatis.version>3.3.0</mybatis.version> <log4j.version>1.2.17</log4j.version> </properties> <!--spring 依赖包--> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <!-- 导入java ee jar 包 --> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> </dependency> <!--junit依赖--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <!--数据--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.37</version> </dependency> <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.2.2</version> </dependency> <!--mybatis依赖--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!-- log日记 --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> </dependencies> <build> <finalName>gym</finalName> <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <configuration> <includes> <include>**/*Tests.java</include> </includes> </configuration> </plugin> </plugins> </build></project>
2. 配置文件编写
下面进行配置文件的书写,配置文件比较常规,在文件中也有注释了,所以这里就不做介绍了。
/SpringMvc/src/main/webapp/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>Archetype Created Web Application</display-name> <!-- 编码过滤器 --> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/spring-mvc.xml,/WEB-INF/spring-mybatis.xml </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <!--拦截所有的请求--> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>/</welcome-file> </welcome-file-list></web-app>
/SpringMvc/src/main/webapp/WEB-INF/springmvc-servlet.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" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <!-- 组件扫描 --> <context:component-scan base-package="com.cvte.chen" /> <mvc:annotation-driven></mvc:annotation-driven> <!--设置静态资源映射--> <mvc:resources mapping="/img/**" location="/WEB-INF/img/" /> <mvc:resources mapping="/css/**" location="/WEB-INF/css/" /> <mvc:resources mapping="/js/**" location="/WEB-INF/js/" /> <mvc:resources mapping="/fonts/**" location="/WEB-INF/fonts/" /> <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> <!--视图解析--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/page/"/> <property name="suffix" value=".jsp"/> </bean></beans>
/SpringMvc/src/main/webapp/WEB-INF/springmvc-mybatis.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" xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd"> <!-- 配置数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=utf8"/> <property name="username" value="root"/> <property name="password" value="root"/> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="configLocation" value="/WEB-INF/sqlMapConfig.xml"/> <property name="dataSource" ref="dataSource"/> </bean> <!-- 配置Springjdbc中数据源事务管理 --> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 注解式事务处理 --> <tx:annotation-driven transaction-manager="txManager"/></beans>
/SpringMvc/src/main/webapp/WEB-INF/sqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""file:///D:/0227/tony/project/mybatis/资料/3-常用配置文件/mybatis-3-config.dtd"><configuration> <mappers> </mappers></configuration>
3. 代码实现
配置文件完成后,我们就可以进行代码编写了。
controller类
/SpringMvc/src/main/java/com/chen/controller/HelloController.java
package com.chen.controller;import javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Component;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import com.chen.service.TableService;@Component@RequestMapping("/hello")public class HelloController { @Resource private TableService tableService; @RequestMapping public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { String msg = tableService.hello(); ModelAndView view = new ModelAndView("show"); view.addObject("msg",msg); return view; }}
entity类和mapper文件
/SpringMvc/src/main/java/com/chen/entity/Mytable.java
package com.chen.entity;import java.io.Serializable;public class Mytable implements Serializable{ /** * */ private static final long serialVersionUID = 1L; private int id; private String name; 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; }}
/SpringMvc/src/main/java/com/chen/entity/Mytable.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> <mapper namespace="com.chen.entity.Mytable"> <select id="findall" resultType="com.chen.entity.Mytable"> select * from mytable; </select> </mapper>
sqlMapConfig.xml中进行mapper文件配置
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""file:///D:/0227/tony/project/mybatis/资料/3-常用配置文件/mybatis-3-config.dtd"><configuration> <mappers> <mapper resource="com/chen/entity/Mytable.xml"/> </mappers></configuration>
service层
/SpringMvc/src/main/java/com/chen/service/TableService.java
package com.chen.service;import javax.annotation.Resource;import org.springframework.stereotype.Component;import com.chen.dao.TableDao;public interface TableService { public String hello();}
/SpringMvc/src/main/java/com/chen/service/TableServiceImpl.java
package com.chen.service;import javax.annotation.Resource;import org.springframework.stereotype.Component;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import com.chen.dao.TableDao;@Component("TableService")public class TableServiceImpl implements TableService{ @Resource private TableDao dao; @Transactional public String hello() { return dao.hello(); }}
dao层
/SpringMvc/src/main/java/com/chen/dao/TableDao.java
package com.chen.dao;public interface TableDao { public String hello();}
/SpringMvc/src/main/java/com/chen/dao/TableDaoImpl.java
package com.chen.dao;import java.util.List;import javax.annotation.Resource;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.support.SqlSessionDaoSupport;import org.springframework.stereotype.Component;import com.chen.entity.Mytable;@Component("TableDao")public class TableDaoImpl implements TableDao{ @Resource(name="sqlSessionFactory") private SqlSessionFactory sqlSessionFactory; public String hello() { List<Mytable> table = sqlSessionFactory.openSession().selectList("com.chen.entity.Mytable.findall"); return "hello " + table.get(0).getName(); }}
页面文件的编写
/SpringMvc/src/main/webapp/index.jsp
<html><body><h2><a href="hello.do">hello.do</a></h2></body></html>
/SpringMvc/src/main/webapp/show.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><h3>${msg }</h3></head><body></body></html>
这样子整个项目搭建和编码工作就都完成了。
项目的整合代码我放在了github上面,有需要的同学可以去看
https://github.com/hugua/SpringMvc.git
- SpringMVC整合mybatis(附源码)
- SSM框架--(Spring+SpringMVC+Mybatis整合)附源码
- SpringMVC+Mybatis框架整合源码
- SpringMVC+Mybatis框架整合源码
- springmvc整合mybatis框架源码
- Swagger与SpringMVC整合(附源码!!!)
- SpringMVC+Mybatis框架整合源码 SSM
- springmvc整合mybatis框架源码 bootstrap html5
- SpringMVC+Mybatis框架整合源码 项目
- SpringMVC+Mybatis框架整合源码 项目
- SpringMVC+Mybatis框架整合源码 项目
- SpringMVC+Mybatis框架整合源码 项目
- Mybatis与SpringMVC整合 源码分析
- springmvc整合mybatis框架源码 bootstrap html5
- springmvc整合mybatis框架源码 bootstrap html5
- springmvc整合mybatis框架源码 bootstrap html5
- springmvc整合mybatis框架源码 bootstrap html5
- SpringMVC-Spring-MyBatis-Freemarker整合+源码下载
- 【JDBC4.2】JDBC事务&JTA事务
- hdu 1325 Is It A Tree?
- 总结 特征选择(feature selection)算法笔记
- Spark1.3从创建到提交:9)Stage的划分和提交源码分析
- Kafka安装配置测试
- SpringMVC整合mybatis(附源码)
- hdu1512 左偏树(可并堆)
- [小技巧] trac 如何设置 Search 的最小长度
- IDEA【spark&mapreduce混合配置】mapreduce spark 本地调试
- 泛型和继承
- Minimum Window Substring
- Tomcat源码分析-线程池应用
- (翻译)draft.js 入门
- 查看程序或dll依赖的dll