SpringMVC整合Mybatis+Maven+Bootstrap的简单Demo

按照上次的博客:
基于SpringMVC+Spring+Hibernate+Maven+Bootstrap的简单Demo

这次把Hibernate转换成Mybatis 3.4.1 基本变化在于数据操作层。

下面贴出代码变动的地方(没有贴出的跟上面一条博客相同,项目运行效果也是一致的),以及此次学习Mybatis用的参考文档.有关Ioc可以参考Spring Ioc详细配置与使用,有关AOP可以参考SpringAOP详细配置与使用,有关Mybatis可以参考Mybatis的工作流程及其原理与解析

Mybatis官方参考文档

Git源码地址

目录结构图 :

这里写图片描述

bean.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:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
    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">

    <!-- 打开Spring的Annotation支持 -->
    <context:annotation-config />
    <!-- 设定Spring 去哪些包中找Annotation -->
    <context:component-scan base-package="com.ctc" />


    <!-- 导入Src目录下的jdbc.properties文件 -->
    <context:property-placeholder location="classpath:jdbc.properties" />

    <bean id="DataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="DataSource" />
        <property name="configLocation"  value="classpath:sqlMapConfig.xml"/>
    </bean>

    <!-- 查找类路径下的映射器并自动将它们创建成 MapperFactoryBean.
         MapperFactoryBean 创建的代理类实现了 UserMapper 接口,并且注入到应用程序中.
         basePackage 属性是让你为映射器接口文件设置基本的包路径。 你可以使用分号或逗号 作为分隔符设置多于一个的包路径.
    -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.ctc.Mapper" />
    </bean>

    <!-- 开启Spring的事务处理  -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="DataSource" />
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager" />
</beans>

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" version="3.0">

         <!-- 创建Spring的监听器 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>  
    <param-name>contextConfigLocation</param-name>  
    <param-value>classpath*:bean.xml</param-value>  
  </context-param>


    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!-- SpringMVC中使用request -->
    <listener>    
        <listener-class>    
            org.springframework.web.context.request.RequestContextListener    
        </listener-class>    
    </listener> 

    <!-- 分页框架pager-taglib -->
    <filter>
        <filter-name>PageFilter</filter-name>
        <filter-class>com.ctc.Common.PageFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>PageFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

sqlMapConfig.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>
        <typeAlias type="com.ctc.Model.User" alias="User" />
    </typeAliases>
</configuration>

User.java :

package com.ctc.Model;



/**
 * 
 * @author Tency
 * 
 * Date 2016/11
 */

public class User {

    private int id;
    private String userName;
    private String passWord;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassWord() {
        return passWord;
    }
    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", userName=" + userName + ", passWord=" + passWord + "]";
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + id;
        result = prime * result + ((passWord == null) ? 0 : passWord.hashCode());
        result = prime * result + ((userName == null) ? 0 : userName.hashCode());
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        User other = (User) obj;
        if (id != other.id)
            return false;
        if (passWord == null) {
            if (other.passWord != null)
                return false;
        } else if (!passWord.equals(other.passWord))
            return false;
        if (userName == null) {
            if (other.userName != null)
                return false;
        } else if (!userName.equals(other.userName))
            return false;
        return true;
    }


}

UserMapper.java :

package com.ctc.Mapper;

import java.util.List;
import java.util.Map;

import org.mybatis.spring.annotation.MapperScan;

import com.ctc.Model.User;

/**
 * 
 * @author Tency
 * 
 * Date 2016/12
 */

@MapperScan
public interface UserMapper {

    List<User> retrieve(String userName,String passWord);
    void add(User user);
    List<User> retrieveAll(Map<String,Object> map);
    int retrieveCount();
    User load(int id);
    void update(User user);
    void delete(int id);

}

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.ctc.Mapper.UserMapper">

    <select id="retrieve" parameterType="map" resultType="User">
        select * from User where userName=#{0} and passWord=#{1}
    </select>

    <select id="retrieveAll" parameterType="int" resultType="User">
    select * from User limit #{offset},#{size}
    </select>

    <select id="retrieveCount" resultType="int">
        select count(*) from User
    </select>

    <select id="load" parameterType="int" resultType="User">
        select * from
        User where id=#{id}
    </select>

    <insert id="add" parameterType="User">
        insert into User (userName,passWord) values (#{userName},#{passWord})
    </insert>

    <update id="update" parameterType="User">
        update User set userName=#{userName} , passWord=#{passWord} where id=#{id}
    </update>

    <delete id="delete" parameterType="int">
        delete from User where id=#{id}
    </delete>
</mapper>

UserServiceImpl.java :

package com.ctc.ServiceImpl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import com.ctc.Mapper.UserMapper;
import com.ctc.Model.PageConstants;
import com.ctc.Model.Pager;
import com.ctc.Model.User;
import com.ctc.Service.UserService;

/**
 * 
 * @author Tency
 * 
 * Date 2016/11
 */
@Service("userServiceImpl")
public class UserServiceImpl implements UserService {

    @Resource
    private UserMapper userMapper;
    HttpSession session;
    HttpServletRequest request;
    @Override
    public List<User> checkLogin(@Param("userName")String userName, @Param("passWord")String passWord) {
        // TODO Auto-generated method stub
        List<User> list= userMapper.retrieve(userName, passWord);
         request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); 
         session=request.getSession();
        if(!list.isEmpty())
        {
            session.setAttribute("userName", list.get(0).getUserName());
        }

        return list;
    }

    @Override
    public void addUser(User user) {
        // TODO Auto-generated method stub
        this.userMapper.add(user);
    }

    @Override
    public User showUser(int id) {
        // TODO Auto-generated method stub
        return userMapper.load(id);
    }

    @Override
    public void updateUser(User user) {
        // TODO Auto-generated method stub
        this.userMapper.update(user);
        request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); 
        session=request.getSession();
        session.setAttribute("userName", user.getUserName());
    }

    @Override
    public void deleteUser(int id) {
        // TODO Auto-generated method stub
        this.userMapper.delete(id);
    }

    @Override
    public Pager<User> userList() {
        // TODO Auto-generated method stub
        Map<String,Object> map = new HashMap<String,Object>();
        Pager<User> pager = new Pager<User>();
        int size = PageConstants.getSize();
        int offset = PageConstants.getOffset();
        map.put("size", size);
        map.put("offset", offset);
        pager.setDatas(userMapper.retrieveAll(map));
        pager.setTotal(userMapper.retrieveCount());
        return pager;
    }





}

猜你喜欢

转载自blog.csdn.net/u010890358/article/details/54411011
今日推荐