spring,springmvc,mybatis基本整合(一)--xml文件配置方式(2)

spring,springmvc,mybatis基本整合(一)–xml文件配置方式(2)之mapper接口

一,整合结构

二,所需jar包

如上图。

三,整合配置

1,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_3_0.xsd" id="WebApp_ID" version="3.0">

  <!-- 上下文参数 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath*:conf/spring/applicationContext-*.xml
    </param-value>
  </context-param>
  <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>
        classpath:conf/config/log4j.properties
    </param-value>
  </context-param>

  <!-- 配置log4j日志监听器,开启日志记录,容器需要 -->
  <listener>
    <listener-class>
        org.springframework.web.util.Log4jConfigListener
    </listener-class>
  </listener>

  <!-- 配置context上下文监听器,创建root容器,和web容器集成在一起 -->
  <listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>

  <!-- 支持Restful风格的请求Url -->
    <filter>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

  <!-- 利用spring提供的编码控制过滤器 -->
   <filter>
      <filter-name>encodingFilter</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>
   </filter>
   <filter-mapping>
      <filter-name>encodingFilter</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>

  <!-- 配置springmvc控制器,会创建web上下文容器,并且会设置root上下文容器为此容器的父容器  -->
  <servlet>
    <servlet-name>controller</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:conf/spring/mvc-dispatcher-controller.xml
        </param-value>
    </init-param>
    <load-on-startup>1</load-on-startup><!-- web容器启动时就创建该context容器 -->
  </servlet>
  <servlet-mapping>
    <servlet-name>controller</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

2,spring容器相关配置文件以及属性文件

持久层配置文件applicationContext-dao.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:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:util="http://www.springframework.org/schema/util"
    xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.2.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">

    <!--  加载jdbc.properties文件 -->
    <context:property-placeholder file-encoding="utf8" location="classpath:conf/config/jdbc.properties"/>

    <!-- 配置dbcp数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
        p:driverClassName="${jdbc.driver}" p:url="${jdbc.url}" p:username="${jdbc.username}"
        p:password="${jdbc.password}" p:maxActive="30" p:maxIdle="5"/>

    <!-- 创建SqlSessionFactory,同时指定数据源和mybatis配置文件。特别注意:需要引入mybatis-spring.jar-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="configLocation" value="classpath:conf/mybatis/Configuration.xml"/>
        <property name="dataSource" ref="dataSource"></property>
    </bean>      

    <!-- 配置Session模板类,配置了Mapper接口,则不再需要,见上 -->
    <!-- <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSessionFactory"/>
    </bean> -->

    <!-- 配置Mapper扫描,会利用反射和动态代理创建实现相应mapper接口的代理类
        特别注意:p:sqlSessionFactoryBeanName="sqlSessionFactory"而不是
        p:sqlSessionFactoryBeanName-ref,如果误写会报上面${xxx}无法加载。
        原因是:MapperScannerConfigurer中定义的SqlSessionsqlSessionFactoryBeanName是字符串
    -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" p:basePackage="com.mapc.zh3demo.mapper"
        p:sqlSessionFactoryBeanName="sqlSessionFactory"/>

</beans>

jdbc.properties属性文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc\:mysql\://127.0.0.1\:3306/test?useUnicode\=true&amp;characterEncoding\=UTF8
jdbc.username=root
jdbc.password=root

业务层配置文件applicationContext-service.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"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">

    <!-- 装配用户业务类实例 -->
    <bean id="userService" class="com.mapc.zh3demo.service.impl.UserServiceImpl"
        p:userMapper-ref="userMapper"/>

</beans>

事务配置文件applicationContext-transaction.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:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">

    <!-- 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
        p:dataSource-ref="dataSource"/>

    <!-- 配置增强通知 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="query*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="add*" propagation="REQUIRED"/>
            <tx:method name="save*" propagation="REQUIRED"/>
            <tx:method name="delete*" propagation="REQUIRED"/>
            <tx:method name="insert*" propagation="REQUIRED"/>
            <tx:method name="update*" propagation="REQUIRED"/>
            <tx:method name="select*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="*" read-only="true"/>
        </tx:attributes>
    </tx:advice>

    <!-- 配置共享事务 -->
    <aop:config expose-proxy="true">
        <!-- 配置切点 -->
        <aop:pointcut expression="execution(* com.mapc.zh3demo.service..*.*(..))" id="txPointcut"/>
        <!-- 配置切面 -->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
    </aop:config>

</beans>

页面控制器层配置文件mvc-dispatcher-controller.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:aop="http://www.springframework.org/schema/aop"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">

    <!-- 处理器映射器:这种方式,从url映射到具体的控制器 -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

    <!-- 处理器适配器 -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

    <!-- 视图解析器,配置ContentNegotiatingViewResolver更通用 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
        p:viewClass="org.springframework.web.servlet.view.JstlView"
        p:prefix="/WEB-INF/pages/" p:suffix=".jsp"/>

    <!-- 静态资源的访问控制 -->
    <mvc:resources location="/resources/" mapping="/resources/**"/>  

    <!-- 处理器 -->
    <bean id="/userController"  class="com.mapc.zh3demo.web.controller.UserController"
        p:userService-ref="userService"/>

</beans>

3,mybatis配置文件

Configuration.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>

  <!-- 在配置文件中配置Mapper扫描器,这里则不再需要 -->
 <!--  <mappers>
    <mapper resource="com/mapc/zh3demo/mapper/UserMapper.xml"/>
  </mappers> -->

</configuration>

Mapper.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="com.mapc.zh3demo.mapper.UserMapper">

  <resultMap type="com.mapc.zh3demo.bean.User" id="UserResult">
    <id column="ID" jdbcType="INTEGER" property="id"/>
    <result column="NAME" jdbcType="VARCHAR" property="name"/>
    <result column="PASSWORD" jdbcType="VARCHAR" property="password"/>
  </resultMap>

  <select id="queryUserList"  resultMap="UserResult">
    select ID,NAME,PASSWORD from USER
  </select>
</mapper>

特说明:Mapper.xml和Mapper.java接口最好在一个包中,切各个命名都一样。

4,log4j.properties日志配置

log4j.rootLogger=DEBUG, Console

#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n  

log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

四,源码

1,POJO

package com.mapc.zh3demo.bean;

import java.io.Serializable;
/**
 * pojo
 * @author DC
 *
 */
@SuppressWarnings("serial")
public class User implements Serializable {
    /**
     * 主键
     */
    private int id;

    /**
     * 用户名
     */
    private String name;

    /**
     * 用户登录密码
     */
    private String password;

    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 String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}

2,Mapper接口

package com.mapc.zh3demo.mapper;

import java.util.List;
import com.mapc.zh3demo.bean.User;

/**
 * sql映射接口
 * @author DC
 *
 */
public interface UserMapper {

    /**
     * 查询用户列表
     * @return
     */
    List<User> queryUserList();
}

对比UserMapper.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="com.mapc.zh3demo.mapper.UserMapper">

  <resultMap type="com.mapc.zh3demo.bean.User" id="UserResult">
    <id column="ID" jdbcType="INTEGER" property="id"/>
    <result column="NAME" jdbcType="VARCHAR" property="name"/>
    <result column="PASSWORD" jdbcType="VARCHAR" property="password"/>
  </resultMap>

  <select id="queryUserList"  resultMap="UserResult">
    select ID,NAME,PASSWORD from USER
  </select>
</mapper>

3,Service和ServiceImpl

package com.mapc.zh3demo.service;

import java.util.List;

import com.mapc.zh3demo.bean.User;

/**
 * 用户业务接口
 * @author DC
 *
 */
public interface UserService {
    /**
     * 查询学生列表方法
     * @return
     */
    List<User> queryUserList();
}
package com.mapc.zh3demo.service.impl;

import java.util.List;

import com.mapc.zh3demo.bean.User;
import com.mapc.zh3demo.mapper.UserMapper;
import com.mapc.zh3demo.service.UserService;

/**
 * 用户业务的具体实现类之一
 * @author DC
 *
 */
public class UserServiceImpl implements UserService{

    /**
     * 实际注入的是实现此接口的动态代理子类实例
     */
    private UserMapper userMapper;

    public void setUserMapper(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    /**
     * 查询所有用户
     */
    @Override
    public List<User> queryUserList() {
        return userMapper.queryUserList();
    }

}

4,页面控制器

package com.mapc.zh3demo.web.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

import com.mapc.zh3demo.service.UserService;
/**
 * 编程式页面控制器
 * @author DC
 *
 */
public class UserController extends AbstractController {

    /**
     * 引入用户业务引用
     */
    private UserService userService;

    /**
     * 设置用户业务引用
     * @param userService
     */
    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    /**
     * 处理请求,返回视图模型
     */
    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest req,
            HttpServletResponse resp) throws Exception {
        return new ModelAndView("showUserList","userList",userService.queryUserList());
    }

}

5,jsp页面

注册用户信息:<br>
    <c:forEach items="${userList}" var="user" varStatus="status">
        ${status.count}::${user.id}--${user.name}--${user.password}<br>
    </c:forEach>

五,运行验证

1,截图



菜鸟一枚,记录留作忘记时提示自己。还待完善,对ajax,json等等的支持还待后续集成在里面。目前这只是最基础的集成。加油

时间: 2024-10-20 20:43:29

spring,springmvc,mybatis基本整合(一)--xml文件配置方式(2)的相关文章

SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释

SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释 2016-04-14 23:40 13030人阅读 评论(2) 收藏 举报 分类: SSM(7) 这几天一直在整合SSM框架,虽然网上有很多已经整合好的,但是对于里面的配置文件并没有进行过多的说明,很多人知其然不知其所以然,经过几天的搜索和整理,今天总算对其中的XML配置文件有了一定的了解,所以拿出来一起分享一下,希望有不足的地方大家批评指正~~~ 首先   这篇文章暂时只对框架中所要用到的配置文件进行解

用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建三:配置spring并测试

这一部分的主要目的是 配置spring-service.xml  也就是配置spring  并测试service层 是否配置成功 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建二:配置MyBatis 并测试(2 配置spring-dao和测试)在这个基础上面 继续进行spring的配置. 回顾上面  我们已经成功测试通过了Mybatis的配置. 这时候的目录结构是: 一:下面我们继续补充目录结构,在com.peakfortake的文件目录项目 

idea的spring整合基于xml文件配置的mybatis报Invalid bound statement (not found): com.music.dao.MusicDao.findAll的问题

一. 题主当时就是自己尝试整合spring和mybatis的时候遇到了这个问题,当时题主只看到了用注解的方式配置的dao层,题主用的是xml文件配置的形式, 而且坑爹的是题主的两个文件的路径写的也不一致,就导致直接用<property name="basePackage" value="com.music.dao"></property> 导致绑定异常 后来在网上查到了解决的办法 ,就是如果路径一致,(如果一致你也就不会来看到本文了), 两个

SSM框架Spring+SpringMVC+MyBatis——详细整合教程

摘要: 包括SQL Maps和Data Access ObjectsDAOMyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的... 摘要:   spring MVC属于SpringFrameWork的后续产品已经融合在Spring Web Flow里面.Spring MVC 分离了控制器.模型对... 1.基本概念 1.1.Spring Spring是一个开源框架Spring是于2003 年兴起的一个轻量级的Java 开发框架由Rod Johnson 在其著作Expert 

Spring+SpringMVC+MyBatis+Maven 服务端XML配置

项目目录结构 spring-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:p="http://www.spr

简单易学的SSM(Spring+SpringMVC+MyBatis)整合

SSM(Spring+SpringMVC+MyBatis)的整合: 具体执行过程:  1.用户在页面向后台发送一个请求 2.请求由DispatcherServlet 前端控制器拦截交给SpringMVC管理,SpringMVC讲这个请求传递给Controller层处理. 同时请求由Listener监听到交付给Spring,Spring建立IOC容器. 3.Controller层中会调用相应的Service层的方法处理业务逻辑.此时Service从上一步中建立好的IOC容器获取对象,然后获取 到M

学习笔记——Spring+SpringMVC+MyBatis框架整合

一.Maven创建项目 1. 在Eclipse中选择New -> Project -> Maven -> Maven Project 2. 选择默认workspace之后建立maven-webapp 3. 填写Group Id和Artifact Id(项目名称) 4. 建立工程后发现目录结构报错 5. 为了避免乱码,右键点击工程选择Properties -> Resource,选择编码方式为UTF-8 6. 在Properties中选择Java Build Path -> J

spring+SpringMVC+Mybatis框架整合

使用SSM(spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合的过程,这次刚刚好基于自己的一个小项目重新搭建了一次,而且比项目搭建的要更好一些.以前解决问题的过程和方法并没有及时记录,以后在自己的小项目中遇到我再整理分享一下.这次,先说说三大框架整合过程.个人认为使用框架并不是很难,关键要理解其思想,这对于我们提高编程水平很有帮助.不过,如果用都不会,谈思想就

Spring+SpringMVC+Mybatis+Mysql整合实例

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文要实现Spring+SpringMVC+Mybatis+Mysql的一个整合,实现了SpringMVC控制访问的页面,将得到的页面参数传递给Spring中的Mybatis的bean类,然后查找Mysql数据的功能,并通过JSP显示出来.建议可以先看笔者另一文章Mybatis与Spring整合创建Web项目.笔者觉得整合过程中问题比较多的还是Spring+Mybatis的整合,Spring