简介

Spring+SpringMVC+MyBatis框架(SSM)是比较热门的中小型企业级项目开发的框架,对于新手来说也是比较容易学习入门的。虽说容易,但在框架搭建过程中仍然遇到了许多问题,因此用实例记录下来吧。


实例

第一步——导包

Spring框架包及其依赖包
MyBatis框架包及其依赖包
MyBatis-EhCache架包
C3P0架包
MySql数据库驱动包

项目架包如下:

项目结构如下:

第二步——整合Dao层(Spring+MyBatis)

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><settings><setting name="cacheEnabled" value="true"/></settings>
</configuration>

因为MyBatis交给Spring管理,因此Mapper在Spring中配置,这里的配置只打开二级缓存

applicationContext-dao.xml

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="com.mysql.jdbc.Driver" /><property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db_pwc" /><property name="user" value="pwc" /><property name="password" value="123456" /><property name="maxPoolSize" value="20" /><property name="minPoolSize" value="1" /><property name="initialPoolSize" value="3" /><property name="maxIdleTime" value="15" /></bean><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="configLocation" value="classpath:sqlMapConfig.xml" /><property name="dataSource" ref="dataSource" /></bean><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="cn.pwc.dao.mapper" /><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /></bean></beans>

1.该配置自动扫描单例化采用代理方式的Mapper,单例化的Mapper的bean名为Mapper接口第一个字母为小写的名。
2.千万要注意sqlSessionFactory的bean中的configLocation属性,其value值务必记得加上classpath:前缀,不然无法加载MyBatis配置文件

第二步——整合Service层(Spring)

业务接口和业务实现

UserService.java

package cn.pwc.service;
import java.util.List;
import cn.pwc.pojo.User;public interface UserService {public void add(User user) throws Exception;public void delete(User user) throws Exception;public User getUserById(int id) throws Exception;public List<User> listUserByAge(int age) throws Exception;
}

UserServiceBean.java

package cn.pwc.service.impl;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import cn.pwc.dao.mapper.UserMapper;
import cn.pwc.pojo.User;
import cn.pwc.service.UserService;@Service @Transactional
public class UserServiceBean implements UserService{@Resource(name="userMapper")private UserMapper mapper;@Overridepublic void add(User user) throws Exception {mapper.insert(user);}@Overridepublic void delete(User user) throws Exception {mapper.deleteById(user.getId());}@Overridepublic User getUserById(int id) throws Exception {User user=null;user=mapper.findById(id);if(user==null){throw new Exception("User is not existed!");}return user;}@Overridepublic List<User> listUserByAge(int age) throws Exception {List<User> list=null;list=mapper.findByAge(age);if(list==null){throw new Exception("List is empty!");}return list;}
}

本实例采用自动扫描加载的方式,因此该业务bean需注解@Service
本实例交由Spring管理事务,因此该业务bean需注解@Transactional

applicationContext-service.xml

    <context:component-scan base-package="cn.pwc.service" />

第三步——添加事务管理

applicationContext-transaction.xml

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

第四步——整合视图层(SpringMVC)

springmvc.xml

    <context:component-scan base-package="cn.pwc.controller"/><mvc:annotation-driven /><bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/" /><property name="suffix" value=".jsp" /></bean>

采用mvc:annotation-driven标签自动装载视图控制器处理器解析器等

视图Controller(HelloController.java)

package cn.pwc.controller;import javax.annotation.Resource;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;import cn.pwc.pojo.User;
import cn.pwc.service.UserService;@Controller
public class HelloController {@Resource(name="userServiceBean")private UserService service;@RequestMapping("/hello")public ModelAndView sayHello(){User user=null;User user2=null;User user3=null;try {user = service.getUserById(1);user2=service.getUserById(1);user3=service.getUserById(1);System.out.println("OK!");} catch (Exception e) {e.printStackTrace();}ModelAndView view=new ModelAndView("hello");view.addObject("user", user);return view;}
}

该Controller类需注解@Controller
视图控制方法需注解@RequestMapping,作为url请求处理方法

第五步——将所有配置装载到Spring容器中

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"id="WebApp_ID" version="3.0"><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext-*.xml</param-value></context-param><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></servlet><servlet-mapping><servlet-name>springMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>

务必注意servlet-mapping中url-pattern属性值不能为/*
加载的配置文件路径必须有classpath:前缀


测试

SSM框架搭建简单实例相关推荐

  1. linux使用flask设计网站,linux下Flask框架搭建简单网页

    开始安装FLASK需要创建一个虚拟环境,虚拟环境可以不干扰正在使用的系统环境,避免影响,并且也不需要完全的root权限,更加安全可靠. 搭建环境 Python3.4 进入到microblog目录下创建 ...

  2. javaweb成长之路:SSM框架搭建

    学习javaweb开发,框架的学习是难以避免的,合理的使用框架进行开发,可以很大程度的提升开发效率,减少开发者的工作量.随着it行业的不断发展,各种框架也是层出不穷,目前使用最广的框架应该是属于ssm ...

  3. SSM框架搭建详细解析

    总结了一下搭建SSM框架流程,在以后用到的时候方便回头使用. 使用工具:MyEclipse 2015:Tomcat 8版本:jdk1.8版本. 首先: 1:创建一个WebProject项目,jdk1. ...

  4. SSM框架搭建,及遇到的问题

    SSM框架搭建,及遇到的问题 1.基本概念 1.1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Exp ...

  5. ssm框架搭建连接mysql_SSM框架集搭建

    SSM(Spring+SpringMVC+Mybatis)框架集由Spring.SpringMVC.Mybatis三个开源框架整合而成,常作为数据源较简单的web项目的框架. 1.三大框架概述 Spr ...

  6. 基于SSM框架搭建的论坛系统

    基于SSM框架搭建的论坛系统 页面展示: 主页 帖子页面 论坛数据库设计 SSM框架搭建 RootConfig.java WebConfig.java WebInit.java 配置po模型 User ...

  7. SSM框架搭建(四) springmvc和mybatis的配置

    SSM框架搭建(一) JDK和MAVEN环境搭建 SSM框架搭建(二) 创建MAVEN项目 SSM框架搭建(三) 数据库创建和MyBatis生成器自动生成实体类.DAO接口和Mapping映射文件 S ...

  8. ssm框架搭建连接mysql_从零开始搭建SSM框架(Spring + Spring MVC + Mybatis)

    最近在回顾和总结一些技术,想到了把之前比较火的 SSM 框架重新搭建出来,作为一个小结,同时也希望本文章写出来能对大家有一些帮助和启发,因本人水平有限,难免可能会有一些不对之处,欢迎各位大神拍砖指教, ...

  9. java持久层用文件_Java持久层框架MyBatis简单实例

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .本文 ...

最新文章

  1. Java 服务端推送消息有那么难吗?
  2. 【Laravel】连接sqlite,Database [] not configured,sqlite example
  3. LeetCode 1854. 人口最多的年份(差分)
  4. comparator 多个条件控制_JUnit5学习之四:按条件执行
  5. 再见Postman,这款API神器更好用!
  6. 分组分页连接查询子查询9202-0422
  7. python是基于什么的内存管理方式_python的内存管理机制是什么?
  8. JDBC学习笔记(7)——事务的隔离级别批量处理
  9. hdfs及yarn的ha和failover
  10. html常用js统计图表插件
  11. java 合并excel单元格
  12. 【Linux】logrotate切割Tomcat日志并轮转(Flume采集准备工作适用)
  13. 一种特定场景去除高光算法
  14. php支付宝提现demo,php 支付宝 支付Demo模板
  15. UESTC 计量经济学复习
  16. Vue项目mint-ui引入方式(完整引入、按需引入)
  17. win10硬盘锁怎么解除_如何解除Windows10系统磁盘加密?
  18. 梅宫主:由文章马伊琍离婚事件 引发关于女性创业群体的一点思考
  19. ChatGPT分销版多开4.4.2版本源码
  20. [转]: 用GCDAsyncSocket解决AsyncSocket读取数据时丢失部分消息

热门文章

  1. [saiku]saiku3.8项目搭建步骤
  2. libvirt零知识学习4 —— libvirt源码编译安装(2)
  3. 卷积学习与传统稀疏编码、ICA模型学习区别(逐步补充)
  4. 【递推】HDU1207汉诺塔II 【汉诺塔及汉诺塔变形 归纳】
  5. 重启mysql的命令 linux_linux重启mysql命令
  6. 运筹学 --- 线性规划
  7. matlab scatter 散点图画法
  8. 博途PLC和CODESYS平台下FB编程应用(如何实例化多个FB)
  9. php ldap_search,如果我不知道基本DN的OU,那么如何使用PHP ldap_search()获取用户OU
  10. RocketMQ事务消息