909422229_springmvc+spring+mybatis整合案例代码篇

来源:互联网 发布:java 接口开发 编辑:程序博客网 时间:2024/06/10 08:58

本次总结一个出门级别的ssm整合案例(只介绍查询操作 具体其他操作可以自己自由实现)

注意事项:

1.本案例使用intellij idea开发2.具体jar包不做介绍(本人导入了spring的全部包+mybatis的包以及数据库驱动包和pring-mybatis整合工具包)3.本案例很大程度上参考了一些教学视频(如有侵权,请给我留言)4.本案例只供学习使用.

具体开发流程:

  1. 程序结构图: 
    结构图

  2. 配置文件的编写.

    2.1 web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5"         xmlns="http://java.sun.com/xml/ns/javaee"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">    <!--配置spring监听器-->    <context-param>        <param-name>contextConfigLocation</param-name>        <param-value>classpath:applicationContext.xml</param-value>    </context-param>    <listener>        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    </listener>    <!--配置springmvc拦截器-->    <servlet>        <servlet-name>springmvc</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <init-param>            <param-name>contextConfigLocation</param-name>            <param-value>classpath:springmvc.xml</param-value>        </init-param>        <load-on-startup>1</load-on-startup>    </servlet>    <servlet-mapping>        <servlet-name>springmvc</servlet-name>        <url-pattern>*.form</url-pattern>    </servlet-mapping>    <!--配置乱码解决方案-->    <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></web-app>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
2.2 applicationContext.xml(具体的bean是在具体编码后填写)
<?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:tx="http://www.springframework.org/schema/tx"       xmlns:context="http://www.springframework.org/schema/context"       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/tx        http://www.springframework.org/schema/tx/spring-tx.xsd        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">        <!--配置通知-->        <tx:advice id="txAdvice" transaction-manager="txManager">                <tx:attributes>                        <tx:method name="select*" read-only="true"/>                        <tx:method name="update*" propagation="REQUIRED"/>                        <tx:method name="insert*" propagation="REQUIRED"/>                        <tx:method name="delete" propagation="REQUIRED"/>                </tx:attributes>        </tx:advice>        <!--配置切面-->        <aop:config>                <aop:pointcut id="piontcut" expression="execution(* com.engle.service.impl.*.*(..))"/>                <aop:advisor advice-ref="txAdvice" pointcut-ref="piontcut"/>        </aop:config>        <!--连接数据库配置文件-->        <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">                <property name="location" value="classpath:database.properties"/>        </bean>        <!--配置数据源-->        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">                <property name="driverClassName" value="${driver}"/>                <property name="url" value="${url}"/>                <property name="username" value="${username}"/>                <property name="password" value="${password}"/>        </bean>        <!--配置session工厂-->        <bean id="sqlsessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">                <property name="dataSource" ref="dataSource"/>                <property name="configLocation" value="classpath:mybatis-config.xml"/>        </bean>        <bean id="userDao" class="com.engle.dao.impl.UserDaoImpl">                <property name="sqlSessionFactory" ref="sqlsessionFactory"/>        </bean>        <bean id="userService" class="com.engle.service.impl.UserServiceImpl">                <property name="userDao" ref="userDao"/>        </bean>        <!--配置事务管理器-->        <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">                <property name="dataSource" ref="dataSource"/>        </bean>        <!--扫描注解-->        <context:component-scan base-package="com.engle" /></beans>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
2.3 database.properties(数据库配置文件)
driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/*yourdatabasename*username=rootpassword=*yourpassword*
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4
2.4 mybatis-config.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.engle.vo.User" alias="user"/>    </typeAliases>    <!--指定映射文件-->    <mappers>        <mapper resource="com/engle/vo/UserMapper.xml"/>    </mappers></configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
2.5 springmvc.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"       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">    <!--扫描注解所在的包-->    <context:component-scan base-package="com.engle.controller"/></beans>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3.具体的编码工作

3.1 vo模块(POJOs)

package com.engle.vo;/** * Created by engle on 16-5-24. */public class User {    private int id;    private String name;    private  String password;    public User() {    }    public User(int id, String name, String password) {        super();        this.id = id;        this.name = name;        this.password = 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;    }    public String toString() {        return "User{" +                "id=" + id +                ", name='" + name + '\'' +                ", password='" + password + '\'' +                '}';    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57

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.engle.vo.UserMapper">    <!--采用* 表的属性必须和pojos属性名相同-->    <select id="selectAll" resultType="com.engle.vo.User">        SELECT * FROM user    </select></mapper>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

3.2 dao模块(包括impl)

UserDao

/** * Created by engle on 16-5-24. */public interface UserDao {    public List<User> selectAll();}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

UserDaoImpl

/** * Created by engle on 16-5-23. */public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {    public List<User> selectAll() {        String statement = "com.engle.vo.UserMapper.selectAll";        return getSqlSession().selectList(statement);    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3.3 service模块(包括impl) 
UserService

public interface UserService {    public List<User> selectAll();}
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

UserServiceImpl

/** * Created by engle on 16-5-23. */public class UserServiceImpl implements UserService {    private UserDao userDao;    public void setUserDao(UserDao userDao) {        this.userDao = userDao;    }    public List<User> selectAll() {        return userDao.selectAll();    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

3.4 utils模块

MybatisUtils

/** * Created by engle on 16-5-23. */public class MybatisUtils {    /**     * 获取userservice对象     */    public static UserService getUserService() {        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");        return (UserService) context.getBean("userService");    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

3.5 controller模块

UserController

/** * Created by engle on 16-5-23. */@Controllerpublic class UserController {    private UserService userService;    public void setUserService(UserService userService) {        this.userService = userService;    }    @RequestMapping("/selectAll")    public String list(ModelMap map){        setUserService(MybatisUtils.getUserService());        map.addAttribute("list",userService.selectAll());        return "/show.jsp";    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

4. jsp页面的编写 
show.jsp

<%@ page import="org.springframework.ui.ModelMap" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><%@taglib prefix="c" uri="/WEB-INF/tld/c.tld" %><html>  <head>    <title>show all user</title>  </head>  <body>  <table width="80%" align="center">    <tr>      <td>编号</td>      <td>姓名</td>      <td>密码</td>    </tr>    <c:forEach items="${list }" var="user">      <tr>        <td>${user.id }</td>        <td>${user.name }</td>        <td>${user.password }</td>      </tr>    </c:forEach>   </table>  </body></html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

5.案例结果:

5.1 数据库查询结果:

这里写图片描述

5.2 网页显示结果 
这里写图片描述

6.总结:

在这次的案例中 由于使用的idea工具遇到了很多的麻烦,虽然耗费了不少的时但是很多东西让我有了更深的理解.我觉得也是一件好事.

原创粉丝点击