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

1 0
原创粉丝点击