SpringMybatis 整合JavaWeb

Posted 春眠不觉笑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMybatis 整合JavaWeb相关的知识,希望对你有一定的参考价值。

 

需要用到新的jar包

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.2.1.RELEASE</version>
</dependency>

pom文件
<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/maven-v4_0_0.xsd">
    <parent>
        <artifactId>01Mybatis</artifactId>
        <groupId>cn.kitty</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>Mybatis-SpringSSM</artifactId>
    <packaging>war</packaging>
    <name>Mybatis-Spring SSM Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <!--<dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>-->
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.39</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/junit/junit -->
        <!-- https://mvnrepository.com/artifact/junit/junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.hamcrest/hamcrest-all -->
        <!--<dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-all</artifactId>
            <version>1.3</version>
            <scope>test</scope>
        </dependency>-->
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.2.1.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.2.1.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
        <!--织入-->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.10</version>
        </dependency>
        <!--配置c3p0-->
        <!-- https://mvnrepository.com/artifact/c3p0/c3p0 -->
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
        </dependency>
        <!--Spring-jdbc需要的jar-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.2.1.RELEASE</version>
        </dependency>
      <!--mybatisSpring jar-->
        <!--spring整合mybatis-->
        <!--Mybatis+Spring整合-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.0</version>
        </dependency>
        <!--JavaEE的依赖-->
        <dependency>
            <groupId>javaee</groupId>
            <artifactId>javaee-api</artifactId>
            <version>5</version>
        </dependency>
        <!-- Spring整合JavaWeb的包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.2.1.RELEASE</version>
        </dependency>

    </dependencies>
    <build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
    </resources>
    </build>
</project>

 

 

package cn.kitty.contrllor;

public class Book {
    private  int bookid;
    private String bookname;
    private int bookprice ;

    public Book() {
    }

    public Book(int bookid, String bookname, int bookprice) {
        this.bookid = bookid;
        this.bookname = bookname;
        this.bookprice = bookprice;
    }

    public int getBookid() {
        return bookid;
    }

    public void setBookid(int bookid) {
        this.bookid = bookid;
    }

    public String getBookname() {
        return bookname;
    }

    public void setBookname(String bookname) {
        this.bookname = bookname;
    }

    public int getBookprice() {
        return bookprice;
    }

    public void setBookprice(int bookprice) {
        this.bookprice = bookprice;
    }
}

IBookDao.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.kitty.dao.IBookDao">
    <insert id="addBook">
  insert book (bookname,bookprice) VALUES (#{bookname},#{bookprice})
    </insert>
</mapper>

IBookService

package cn.kitty.service;

import cn.kitty.contrllor.Book;

public interface IBookService {
    public  void addBook(Book book);
}

IBookServiceImpl

package cn.kitty.contrllor.service.impl;

import cn.kitty.contrllor.controller.Book;
import cn.kitty.contrllor.dao.IBookDao;
import cn.kitty.contrllor.service.IBookService;

public class BookServiceImpl implements IBookService {
    private IBookDao dao;
    public void addBook(Book book) {
      dao.addBook(book);
    }

    public IBookDao getDao() {
        return dao;
    }

    public void setDao(IBookDao dao) {
        this.dao = dao;
    }
}

BookServlet

package cn.kitty.servlet;

import cn.kitty.contrllor.Book;
import cn.kitty.service.IBookService;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


public class BookServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //解决乱码
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        String bookname=request.getParameter("bookname");
        int bookprice=Integer.parseInt(request.getParameter("bookprice"));
        Book book=new Book();
        book.setBookname(bookname);
        book.setBookprice(bookprice);
//调度service实现添加  01 ApplicationContext
//02程序一启动,在初始化ServletContext (Servlet上下文)application类型 应用程序在初始化
//application 我们可以开一个监听器,顺便的将Spring容器同时也给初始化
        //01 ApplicaitionContext context=new ClassPathXmlApplicationContext("ApplicationContext.xml");
//02.WebApplicationContext context= WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
        WebApplicationContext context= WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
        IBookService bookService = (IBookService)context.getBean("bookService");
        bookService.addBook(book);
        request.getRequestDispatcher("/index.jsp").forward(request,response);

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
           doPost(request ,response);
    }
}

ApplicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/tx  http://www.springframework.org/schema/tx/spring-tx.xsd
">
    <!--01.识别jdbc.properties文件-->
    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="jdbcUrl" value="jdbc:mysql:///aount"></property>
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
        <property name="user" value="root"></property>
        <property name="password" value=""></property>
    </bean>
    <!--03.工厂配置-->
    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <!--big config path-->
        <property name="configLocation" value="classpath:Mybatis-config.xml"></property>
    </bean>
    <!--dao  实现类 映射文件的扫描器可以动态的在内存中构建接口的实现类,代理对象-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.kitty.dao"></property>
    </bean>
    <!--service-->
    <bean id="bookService" class="cn.kitty.service.impl.BookServiceImpl">
        <property name="dao" ref="IBookDao"></property>
    </bean>
    <!--06.事务管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!-- 07.AspectJ AOP 配置事务 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="addBook" isolation="DEFAULT" propagation="REQUIRED"/>
    </tx:attributes>
</tx:advice>
    <aop:config>
        <!--配置了切点Pointcut  * *..service.*.*(..))-->
        <aop:pointcut id="mypoint" expression="execution(* *..service.*(..))"/>
        <!--顾问-->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="mypoint"></aop:advisor>
    </aop:config>

</beans>

jdbc.perperties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///aount
jdbc.username=root
jdbc.password=

Mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
      <!--<typeAliases>
          <package name="cn.kitty.controllerroller"></package>
      </typeAliases>-->
   <!-- <mappers>
        &lt;!&ndash;<package name="cn.kitty.dao"></package>&ndash;&gt;
        <mapper resource="cn/kitty/dao/IBookDao.xml"/>
    </mappers>-->
</configuration>

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:ApplicationContext.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <servlet>
    <servlet-name>BookServlet</servlet-name>
    <servlet-class>cn.kitty.servlet.BookServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>BookServlet</servlet-name>
    <url-pattern>/BookServlet</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>addBook.jsp</welcome-file>
  </welcome-file-list>
</web-app>

addBook.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>添加图书</title>
    <form  name="add" method="post" action="/BookServlet" >
        图书名称:<input  name="bookname"/>
        图书价格:<input name="bookprice"/>
        <input type="submit" value="添加">
    </form>
</head>
<body>

</body>
</html>

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<h2>添加图书成功了</h2>
</body>
</html>

 

 

以上是关于SpringMybatis 整合JavaWeb的主要内容,如果未能解决你的问题,请参考以下文章

SpringMyBatis一篇文章带你理解Spring整合MyBatis的实质

请教mybatis+spring+atomikos的整合问题

Spring整合MyBatis

Spring和mybatis的整合

MyBatis和Spring整合

SSM-maven 简单整合