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

来源:互联网 发布:美林数据股份有限公司 编辑:程序博客网 时间:2024/04/30 19:29

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

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

下面贴出代码变动的地方(没有贴出的跟上面一条博客相同,项目运行效果也是一致的),以及此次学习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 */@MapperScanpublic 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;    }}
0 0
原创粉丝点击