SSM框架搭建简单实例
简介
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框架搭建简单实例相关推荐
- linux使用flask设计网站,linux下Flask框架搭建简单网页
开始安装FLASK需要创建一个虚拟环境,虚拟环境可以不干扰正在使用的系统环境,避免影响,并且也不需要完全的root权限,更加安全可靠. 搭建环境 Python3.4 进入到microblog目录下创建 ...
- javaweb成长之路:SSM框架搭建
学习javaweb开发,框架的学习是难以避免的,合理的使用框架进行开发,可以很大程度的提升开发效率,减少开发者的工作量.随着it行业的不断发展,各种框架也是层出不穷,目前使用最广的框架应该是属于ssm ...
- SSM框架搭建详细解析
总结了一下搭建SSM框架流程,在以后用到的时候方便回头使用. 使用工具:MyEclipse 2015:Tomcat 8版本:jdk1.8版本. 首先: 1:创建一个WebProject项目,jdk1. ...
- SSM框架搭建,及遇到的问题
SSM框架搭建,及遇到的问题 1.基本概念 1.1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Exp ...
- ssm框架搭建连接mysql_SSM框架集搭建
SSM(Spring+SpringMVC+Mybatis)框架集由Spring.SpringMVC.Mybatis三个开源框架整合而成,常作为数据源较简单的web项目的框架. 1.三大框架概述 Spr ...
- 基于SSM框架搭建的论坛系统
基于SSM框架搭建的论坛系统 页面展示: 主页 帖子页面 论坛数据库设计 SSM框架搭建 RootConfig.java WebConfig.java WebInit.java 配置po模型 User ...
- SSM框架搭建(四) springmvc和mybatis的配置
SSM框架搭建(一) JDK和MAVEN环境搭建 SSM框架搭建(二) 创建MAVEN项目 SSM框架搭建(三) 数据库创建和MyBatis生成器自动生成实体类.DAO接口和Mapping映射文件 S ...
- ssm框架搭建连接mysql_从零开始搭建SSM框架(Spring + Spring MVC + Mybatis)
最近在回顾和总结一些技术,想到了把之前比较火的 SSM 框架重新搭建出来,作为一个小结,同时也希望本文章写出来能对大家有一些帮助和启发,因本人水平有限,难免可能会有一些不对之处,欢迎各位大神拍砖指教, ...
- java持久层用文件_Java持久层框架MyBatis简单实例
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .本文 ...
最新文章
- Java 服务端推送消息有那么难吗?
- 【Laravel】连接sqlite,Database [] not configured,sqlite example
- LeetCode 1854. 人口最多的年份(差分)
- comparator 多个条件控制_JUnit5学习之四:按条件执行
- 再见Postman,这款API神器更好用!
- 分组分页连接查询子查询9202-0422
- python是基于什么的内存管理方式_python的内存管理机制是什么?
- JDBC学习笔记(7)——事务的隔离级别批量处理
- hdfs及yarn的ha和failover
- html常用js统计图表插件
- java 合并excel单元格
- 【Linux】logrotate切割Tomcat日志并轮转(Flume采集准备工作适用)
- 一种特定场景去除高光算法
- php支付宝提现demo,php 支付宝 支付Demo模板
- UESTC 计量经济学复习
- Vue项目mint-ui引入方式(完整引入、按需引入)
- win10硬盘锁怎么解除_如何解除Windows10系统磁盘加密?
- 梅宫主:由文章马伊琍离婚事件 引发关于女性创业群体的一点思考
- ChatGPT分销版多开4.4.2版本源码
- [转]: 用GCDAsyncSocket解决AsyncSocket读取数据时丢失部分消息
热门文章
- [saiku]saiku3.8项目搭建步骤
- libvirt零知识学习4 —— libvirt源码编译安装(2)
- 卷积学习与传统稀疏编码、ICA模型学习区别(逐步补充)
- 【递推】HDU1207汉诺塔II 【汉诺塔及汉诺塔变形 归纳】
- 重启mysql的命令 linux_linux重启mysql命令
- 运筹学 --- 线性规划
- matlab scatter 散点图画法
- 博途PLC和CODESYS平台下FB编程应用(如何实例化多个FB)
- php ldap_search,如果我不知道基本DN的OU,那么如何使用PHP ldap_search()获取用户OU
- RocketMQ事务消息