详解SpringMVC4+Mybatis构建

SpringMVC项目构建请见前文详解Maven 构建SpringMVC4.0 。本文主要介绍SpringMVC整合Mybatis。

1.修改applicationContext.xml添加Spring对Mybatis的支持。参考官方文档的介绍:mybatis-spring。实现后的的applicationContext.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:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
           http://www.springframework.org/schema/mvc
           http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context 
           http://www.springframework.org/schema/context/spring-context.xsd">

    <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
    <bean class="org.springframework.http.converter.ResourceHttpMessageConverter" />
    <!-- 系统基础配置  将占位符替换到指定的配置文件中 -->
    <bean
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <!-- 忽略占位符异常 -->
        <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
        <!-- 在解析一个占位符的时候,会先用系统属性来尝试,然后才会用指定的属性文件-->
        <property name="ignoreResourceNotFound" value="true" />
        <property name="locations">
            <list>
                <!-- 标准配置 -->
                <value>/WEB-INF/jdbc.properties</value>
            </list>
        </property>
    </bean>

    <!-- 数据源配置,使用应用内的DBCP数据库连接池,已经包含在Spring中 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <!-- 数据库连接 -->
        <property name="driverClassName" value="${jdbc.driver}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />

        <property name="maxIdle" value="${dbcp.maxIdle}" />
        <property name="maxActive" value="${dbcp.maxActive}" />
        <property name="defaultAutoCommit" value="true" />
        <property name="timeBetweenEvictionRunsMillis" value="3600000" />
        <property name="minEvictableIdleTimeMillis" value="3600000" />
    </bean>

    <!-- 配置jdbcTemplate -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <constructor-arg ref="dataSource" />
    </bean>

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

    <!-- MyBatis配置 -->
    <!-- 创建Factory Bean -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- sessionFactory的必须属性JDBC DataSource -->
        <property name="dataSource" ref="dataSource" />
        <!--
            仅当一些特殊环境中data sources 和    MyBatis transaction managers被忽略时,才需要这个配置
或者当mapper XML文件作为作为mapper classes时不在classpath路径下myBatis设置、Mpapper位置 
<property name="configLocation"
            value="classpath:/mapper/mybatis-config.xml" />
        -->
        <!-- 该属性指定mybatis xml映射文件的位置 -->
        <property name="mapperLocations" value="classpath*:/mapper/*mapper.xml" />
    </bean>

    <!-- mapper接口自动扫描注入 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.zzq" />
    </bean>

    <!-- 以静态变量保存ApplicationContext -->
    <!-- bean class="com.xingyun.juju.core.SpringContextHolder" lazy-init="false" /-->
    <!-- 文件上传 -->
    <bean id="multipartResolver"  
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
        <property name="maxUploadSize" value="10000000" />
    </bean>

    <context:component-scan base-package="com.zzq.*" />
</beans>

配置文件作用见注释
2.在WEB-INF路径下创建jdbc.properties配置文件,修改成为本地配置即可,配置文件内容如下:
jdbc.properties

## MySQL
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc\:mysql\://127.0.0.1\:3306/zzq_test?useUnicode\=true&characterEncoding\=UTF-8
jdbc.username=root
jdbc.password=root
dbcp.maxIdle=5
dbcp.maxActive=40

3.创建测试代码,目录结构如图:
这里写图片描述
TestController:

package com.zzq.controller;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import com.zzq.model.User;
import com.zzq.service.UserService;

@RestController
@RequestMapping(value = "/api_cat")
public class TestController  {

    @Autowired
    private UserService userService;

    @RequestMapping(value = "/add")
    public ModelAndView save(@ModelAttribute User user,HttpServletRequest request, HttpServletResponse response) {
         userService.addUser(user);
        return new ModelAndView("test", "apiver", null);
    }

}

UserMapper.java:

package com.zzq.mapper;

import com.zzq.model.User;

public interface UserMapper {
    int addUser(User bean);
}

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.zzq.mapper.UserMapper">
    <!-- 插入api类型 -->
    <insert id="addUser" parameterType="com.zzq.model.User" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO user (id,name) VALUES (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR})
    </insert>
</mapper>

UserService.java:

package com.zzq.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.zzq.mapper.UserMapper;
import com.zzq.model.User;

@Service("userService")
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public int addUser(User bean){
        return userMapper.addUser(bean);
    }

}

User.java:

package com.zzq.model;

import java.io.Serializable;

public class User implements Serializable {
    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;
    }

}

数据库User表结构如图:
这里写图片描述
建表sql:

CREATE TABLE `user` (
  `id` int(11) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

部署运行项目,数据库新添加了一条信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值