springmvc spring4.3.7 mybatis3.4.2 集成

springmvc spring4.3.7 mybatis3.4.2 集成介绍

1.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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.ccrc</groupId>
  <artifactId>test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  
  <properties>
        <spring.version>4.3.7.RELEASE</spring.version>
        <hibernate.version>5.2.5.Final</hibernate.version>
        <lang.version>2.6</lang.version>
        <guava.version>20.0</guava.version>
        <curator.version>2.10.0</curator.version>
        <druid.version>1.0.26</druid.version>
        <mysql.version>5.1.40</mysql.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</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-orm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>${guava.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>${curator.version}</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>${druid.version}</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.8.4</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.2</version>
        </dependency>
        <dependency>
            <groupId>com.ccrc</groupId>
            <artifactId>commons-lang5</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>
    
</project>

2.引入配置文件 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:tx="http://www.springframework.org/schema/tx"
    xmlns:util="http://www.springframework.org/schema/util"
    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.3.xsd 
        http://www.springframework.org/schema/util 
        http://www.springframework.org/schema/util/spring-util-4.3.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.3.xsd">

    <context:annotation-config />
    
    <context:component-scan base-package="com.ccrc">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
    
    <context:property-placeholder location="classpath:dbconfig.properties" />
    
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">  
         <property name="url" value="${druid.url}" />  
         <property name="username" value="${druid.username}" />  
         <property name="password" value="${druid.password}" />  
         <property name="driverClassName" value="${druid.driverClassName}" />  
         <property name="filters" value="${druid.filters}" />  
         <property name="maxActive" value="${druid.maxActive}" />
         <property name="initialSize" value="${druid.initialSize}" />
         <property name="maxWait" value="${druid.maxWait}" />
         <property name="minIdle" value="${druid.minIdle}" />  
         <property name="timeBetweenEvictionRunsMillis" value="${druid.timeBetweenEvictionRunsMillis}" />
         <property name="minEvictableIdleTimeMillis" value="${druid.minEvictableIdleTimeMillis}" />  
         <property name="validationQuery" value="${druid.validationQuery}" />  
         <property name="testWhileIdle" value="${druid.testWhileIdle}" />  
         <property name="testOnBorrow" value="${druid.testOnBorrow}" />  
         <property name="testOnReturn" value="${druid.testOnReturn}" />  
         <property name="maxOpenPreparedStatements" value="${druid.maxOpenPreparedStatements}" />
         <property name="removeAbandoned" value="${druid.removeAbandoned}" />
         <property name="removeAbandonedTimeout" value="${druid.removeAbandonedTimeout}" />
         <property name="logAbandoned" value="${druid.logAbandoned}" />
    </bean >

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="mapperLocations" value="classpath:com/ccrc/dao/*Mapper.xml" />
    </bean>
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.ccrc.dao" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    </bean>

    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <tx:annotation-driven transaction-manager="txManager" />

    <bean id="persistenceExceptionTranslationPostProcessor"
        class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
</beans>

引入数据库配置 dbconfig.properties

druid.url= jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8
druid.driverClassName= com.mysql.jdbc.Driver  
druid.username= root
druid.password= root
druid.filters= stat,log4j,wall
druid.maxActive= 10
druid.initialSize= 1
druid.maxWait= 60000
druid.minIdle= 10
druid.maxIdle= 15
druid.timeBetweenEvictionRunsMillis= 60000
druid.minEvictableIdleTimeMillis= 300000
druid.validationQuery= SELECT 'x'
druid.testWhileIdle= true
druid.testOnBorrow= false
druid.testOnReturn= false
druid.maxOpenPreparedStatements= 20
druid.removeAbandoned= true
druid.removeAbandonedTimeout= 1800
druid.logAbandoned= true

hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
hibernate.show_sql = true
hibernate.format_sql = false

引入spring mvc配置文件 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:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">                    

    <context:component-scan base-package="com.ccrc.controller"/>

    <mvc:default-servlet-handler />

    <mvc:annotation-driven conversion-service="conversionService"/>
    
    <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">    
        <property name="converters">    
            <list>    
                <bean class="com.ccrc.lang.DateConverter" />    
            </list>    
        </property>    
    </bean>  
    
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/" />
        <property name="suffix" value=".jsp" />
    </bean>
    
</beans>

3.数据库表为

+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| userId   | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| address  | varchar(255) | YES  |     | NULL    |                |
| age      | int(11)      | YES  |     | NULL    |                |
| birthday | datetime     | YES  |     | NULL    |                |
| gender   | int(11)      | YES  |     | NULL    |                |
| userName | varchar(255) | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+

4.UserTabController类

package com.ccrc.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.ccrc.lang.Data;
import com.ccrc.lang.Pager;
import com.ccrc.model.UserTab;
import com.ccrc.service.IUserTabService;

/**
 * 用户管理,用管理用户信息 控制器
 * @author Jalen
 * @time 2017-03-30 10:39
 *
 */
@Controller
@RequestMapping("/userTab")
public class UserTabController extends BaseController {
    
    @Autowired
    private IUserTabService userTabService;

    @RequestMapping("/list")
    public String userTabList(Model model) {
        //TODO
        return "userTab/userTab_list";
    }
    
    @RequestMapping("/ajaxPage")
    @ResponseBody
    public Pager getPageUserTab(int rows, int page) {
        Pager pager = new Pager(rows, page);
        userTabService.getPageUserTab(pager);
        return pager;
    }

    @RequestMapping("/ajaxAdd")
    @ResponseBody
    public Data ajaxAddUserTab(UserTab userTab) {
        userTabService.addUserTab(userTab);
        return Data.success("添加信息成功!");
    }

    @RequestMapping("/ajaxModify")
    @ResponseBody
    public Data ajaxModifyUserTab(UserTab userTab) {
        userTabService.modifyUserTab(userTab);
        return Data.success("修改信息成功!");
    }

    @RequestMapping("/ajaxRemove")
    @ResponseBody
    public Data ajaxRemoveUserTab(Long userId) {
        userTabService.removeUserTab(userId);
        return Data.success("删除信息成功!");
    }

    @RequestMapping("/ajaxGet")
    @ResponseBody
    public Data ajaxGetUserTabByUserId(Long userId) {
        return Data.success(userTabService.getUserTabByUserId(userId));
    }

    @RequestMapping("/ajaxFind")
    @ResponseBody
    public Data ajaxFindUserTabByUserId(Long userId) {
        return Data.success(userTabService.getUserTabByUserId(userId));
    }

    @RequestMapping("/ajaxGetUserTabByAgeUserName")
    @ResponseBody
    public Data ajaxGetUserTabByAgeUserName(Integer age, String userName) {
        return Data.success(userTabService.getUserTabByAgeUserName(age, userName));
    }

    @RequestMapping("/ajaxFindUserTabByGenderUserName")
    @ResponseBody
    public Data ajaxFindUserTabByGenderUserName(Integer gender, String userName) {
        return Data.success(userTabService.findUserTabByGenderUserName(gender, userName));
    }

}

5.接口IUserTabService

/**
 * 
 */
package com.ccrc.service;

import java.util.Date;
import java.util.List;

import com.ccrc.lang.Pager;
import com.ccrc.model.UserTab;

/**
 * 用户管理,用管理用户信息 Service接口定义
 * @author Jalen
 * @time 2017年03月30日 10:39
 *
 */
public interface IUserTabService {
    
    UserTab getUserTabByUserId(Long userId);

    void getPageUserTab(Pager pager);

    void addUserTab(UserTab userTab);

    void modifyUserTab(UserTab userTab);

    void removeUserTab(Long userId);

    UserTab findUserTabByUserId(Long userId);

    List<UserTab> getUserTabByAgeUserName(Integer age, String userName);

    List<UserTab> findUserTabByGenderUserName(Integer gender, String userName);

}

6.接口实现 UserTabService

/**
 * 
 */
package com.ccrc.service;

import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.ccrc.lang.Pager;
import com.ccrc.dao.UserTabMapper;
import com.ccrc.model.UserTab;

/**
 * 用户管理,用管理用户信息 Service实现    
 * @author Jalen
 * @time 2017年03月30日 10:39
 *
 */
@Service
@Transactional(readOnly = true)
public class UserTabService implements IUserTabService {

    @Autowired
    private UserTabMapper userTabMapper;
    
    @Override
    public UserTab getUserTabByUserId(Long userId) {
        return userTabMapper.selectByPrimaryKey(userId);
    }

    @Override
    public void getPageUserTab(Pager pager) {
        List<UserTab> rets = userTabMapper.selectPage(pager.getCurPage(), pager.getPageSize());
        pager.setRows(rets);
        pager.setTotal(userTabMapper.selectTotal());
    }

    @Transactional
    @Override
    public void addUserTab(UserTab userTab) {
        userTabMapper.insert(userTab);
    }

    @Transactional
    @Override
    public void modifyUserTab(UserTab userTab) {
        userTabMapper.updateByPrimaryKey(userTab);
    }

    @Transactional
    @Override
    public void removeUserTab(Long userId) {
        userTabMapper.deleteByPrimaryKey(userId);
    }

    @Override
    public UserTab findUserTabByUserId(Long userId) {
        return userTabMapper.findByPrimaryKey(userId);
    }

    @Override
    public List<UserTab> getUserTabByAgeUserName(Integer age, String userName) {
        return userTabMapper.selectByAgeUserName(age, userName);
    }

    @Override
    public List<UserTab> findUserTabByGenderUserName(Integer gender, String userName) {
        return userTabMapper.findByGenderUserName(gender, userName);
    }

}

7.UserTabMapper类

package com.ccrc.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.ccrc.model.UserTab;

/**
 * 此类为[代码工厂]自动生成,继承了BaseDao类,已经拥有基本的增删改成操作
 * <其他请自行扩展>
 * @time 2017-03-30 10:39
 * @CodeFactoryGenerated
 */
public interface UserTabMapper {
    
    
    UserTab selectByPrimaryKey(Long userId);

    List<UserTab> selectPage(@Param("curPage") Integer curPage, @Param("pageSize") Integer pageSize);

    Long selectTotal();

    int insert(UserTab userTab);

    int updateByPrimaryKey(UserTab userTab);

    int deleteByPrimaryKey(Long userId);

    UserTab findByPrimaryKey(Long userId);

    List<UserTab> selectByAgeUserName(@Param("age") Integer age, @Param("userName") String userName);

    List<UserTab> findByGenderUserName(@Param("gender") Integer gender, @Param("userName") String userName);

}

 

8.UserTabMapper.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.ccrc.dao.UserTabMapper">
    <resultMap id="BaseResultMap" type="com.ccrc.model.UserTab">
        <id column="userId" jdbcType="BIGINT" property="userId" />
        <result column="address" jdbcType="VARCHAR" property="address" />
        <result column="age" jdbcType="INTEGER" property="age" />
        <result column="birthday" jdbcType="TIMESTAMP" property="birthday" />
        <result column="gender" jdbcType="INTEGER" property="gender" />
        <result column="userName" jdbcType="VARCHAR" property="userName" />

    </resultMap>
    
    <sql id="Base_Column_List">
        userId, address, age, birthday, gender, userName

    </sql>
    
    <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
        from user_tab
        where userId = #{userId,jdbcType=BIGINT}
    </select>

    <select id="selectPage" resultMap="BaseResultMap">
        select 
        <include refid="Base_Column_List"/>
        from user_tab
        where 1=1
        <if test="curPage!=null and pageSize!=null">
            limit #{curPage},#{pageSize} 
        </if>
    </select>

    <select id="selectTotal" resultType="java.lang.Long">
        select count(userId)
        from user_tab
    </select>

    <insert id="insert" parameterType="com.ccrc.model.UserTab">
        insert into user_tab (
            address, age, birthday, gender, userName

        )
        values (
            #{address,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}, #{birthday,jdbcType=TIMESTAMP}, #{gender,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}
        )
    </insert>

    <update id="updateByPrimaryKey" parameterType="com.ccrc.model.UserTab">
        update user_tab
        set 
                address = #{address,jdbcType=VARCHAR}, 
        age = #{age,jdbcType=INTEGER}, 
        birthday = #{birthday,jdbcType=TIMESTAMP}, 
        gender = #{gender,jdbcType=INTEGER}, 
        userName = #{userName,jdbcType=VARCHAR}

        where userId = #{userId,jdbcType=BIGINT}
    </update>

    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
        delete from user_tab where userId = #{userId,jdbcType=BIGINT}
    </delete>

    <select id="findByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
        from user_tab
        where userId = #{userId,jdbcType=BIGINT}
    </select>

    <select id="selectByAgeUserName" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
        from user_tab
        where age = #{age,jdbcType=INTEGER
            and userName = #{userName,jdbcType=VARCHAR}
    </select>

    <select id="findByGenderUserName" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
        from user_tab
        where gender = #{gender,jdbcType=INTEGER
            and userName = #{userName,jdbcType=VARCHAR}
    </select>

</mapper>

9. UserTab 实体类

package com.ccrc.model;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ccrc.lang.DateStyle;


/**
 * 用户管理,用管理用户信息 实体对象    
 * @author Jalen
 * @time 2017年03月13日 10:28
 * 
 */

@SuppressWarnings("serial")
public class UserTab extends EntitySerde {

    /** userId */
    private Long userId;

    /** address */
    private String address;

    /** age */
    private Integer age;

    /** birthday */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateStyle.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8")
    private Date birthday;

    /** gender */
    private Integer gender;

    /** 用户名称 */
    private String userName;

    /**
     * 获取 userId 的值
     * @return Long
     */
    public Long getUserId() {
        return userId;
    }
    
    /**
     * 设置 userId 的值
     * @param Long userId
     */
    public UserTab setUserId(Long userId) {
        this.userId = userId;
        return this;
    }

    /**
     * 获取 address 的值
     * @return String
     */
    public String getAddress() {
        return address;
    }
    
    /**
     * 设置 address 的值
     * @param String address
     */
    public UserTab setAddress(String address) {
        this.address = address;
        return this;
    }

    /**
     * 获取 age 的值
     * @return Integer
     */
    public Integer getAge() {
        return age;
    }
    
    /**
     * 设置 age 的值
     * @param Integer age
     */
    public UserTab setAge(Integer age) {
        this.age = age;
        return this;
    }

    /**
     * 获取 birthday 的值
     * @return Date
     */
    public Date getBirthday() {
        return birthday;
    }
    
    /**
     * 设置 birthday 的值
     * @param Date birthday
     */
    public UserTab setBirthday(Date birthday) {
        this.birthday = birthday;
        return this;
    }

    /**
     * 获取 gender 的值
     * @return Integer
     */
    public Integer getGender() {
        return gender;
    }
    
    /**
     * 设置 gender 的值
     * @param Integer gender
     */
    public UserTab setGender(Integer gender) {
        this.gender = gender;
        return this;
    }

    /**
     * 获取 用户名称 的值
     * @return String
     */
    public String getUserName() {
        return userName;
    }
    
    /**
     * 设置 用户名称 的值
     * @param String userName
     */
    public UserTab setUserName(String userName) {
        this.userName = userName;
        return this;
    }


}
10.工程结构

165906_C1BL_3213541.png

11.页面没有贴出来,都在工程里面,上码云地址下载

12.部署tomcat 效果

170037_0iQj_3213541.png

马云地址: https://git.oschina.net/peaktiger/test

里面有两个项目 一个是ssm集成项目test, 一个是test要依赖到的项目 commons-lang5

数据库脚本我没发,发了一个表结构,搭建根据表结构自己去创建表,用的mysql数据库

希望能够帮到有需要的人。有什么问题可以交流,有什么不好的地方欢迎大家给我提意见,谢谢。

转载于:https://my.oschina.net/u/3213541/blog/870959

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值