学习主体

  • SSM环境搭建与整合
  • CRUD的初步使用

ssm整合

  • SSM是什么?
    Spring,SpringMVC,Mybastis
  • 为什么要专门训练SSM?
    要开发一个项目,首先是搭建SSM环境,之后才能开发其他功能
  • 整合思路是什么?
    1.先搭建整合的环境
    2.先把Spring的配置搭建完成
    3.再使用Spring整合SpringMVC框架
    4.最后使用Spring整合MyBatis框架
  • SSM整合可以使用多种方式,咱们会选择XML + 注解的方式

SSM环境搭建

  • 1.数据库创建ssm
    2.创建maven工程
    3.properties
    4.依赖框架
    5.log4j

数据库SQL

create database ssm;
use ssm;
create table person(
id int primary key auto_increment,
`name` varchar(20),
money double
);

pom.xml

  <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><spring.version>5.2.9.RELEASE</spring.version><slf4j.version>1.6.6</slf4j.version><log4j.version>1.2.12</log4j.version><mysql.version>5.1.6</mysql.version><mybatis.version>3.4.5</mybatis.version></properties><dependencies><!-- spring --><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.6.8</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.0</version><scope>provided</scope></dependency><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!-- log start --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${slf4j.version}</version></dependency><!-- log end --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.0</version></dependency><dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version><type>jar</type><scope>compile</scope></dependency></dependencies>

log4j.properties

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=d:\\LittlePrograme\\Export_Parent\\Export_Parent.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=INFO, STDOUT

整合Spring框架测试代码IOC&DI

  • 编写业务类调用测试逻辑
    TestPersonService
    IPersonService PersonServiceImpl
  • Person
    (2)applicationContext.xml
    (3)配置组件扫描 – 验证IOC
    (4)配置哪些不扫描
    (5)验证DI
  • IPersonDao PersonDaoImpl
    TestPersonService
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class TestPersonService {private static final Logger log = Logger.getLogger(TestPersonService.class.getName());@AutowiredIPersonService personService;@Testpublic void test01(){//编写两个业务功能 查找所有的person 保存一个person//创建业务对象//IPersonService personService = new PersonServiceImpl();//调用查询log.info(personService+"");List<Person> list = personService.findAll();//调用保存log.info(list+"");Person person = new Person("jack",100.00);personService.savePerson(person);List<Person> list1 = personService.findAll();log.info(list1+"");}@Testpublic void test02(){//DISystem.out.println(personService);}
}

Person

public class Person {private Integer id;private String name;private Double money;public Person() {}public Person(String name, Double money) {this.name = name;this.money = money;}@Overridepublic String toString() {return "Person{" +"id=" + id +", name='" + name + '\'' +", money=" + money +'}';}

IPersonService

public interface IPersonService {//显示所有的Person数据List<Person> findAll();//保存一个Person数据void savePerson(Person person);
}

PersonServiceImpl

@Service
public class PersonServiceImpl implements IPersonService {@Autowiredprivate IPersonDao iPersonDao;@Overridepublic List<Person> findAll() {List<Person> list = iPersonDao.findAll(); //测试IOC时写打印语句 return list;}@Overridepublic void savePerson(Person person) {iPersonDao.save(person);//测试IOC时写打印语句 }
}

applicationContext.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"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd"><!--   设置扫描包,包下设置注解@Service @Repository @Component @AutoWried--><context:component-scan base-package="com.wzx"><!--    由于springmvc的controller是由springmvc来扫描,需要将controller排除在外--><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan>
</beans>

IPersonDao

public interface IPersonDao {// 一般都是 CRUD//创建 add save//find  findById findAll//update updateById//deleteById  deleteByIdsList<Person> findAll();void save(Person person);
}

PersonDaoImpl

@Repository
public class PersonDaoImpl implements IPersonDao {@Overridepublic List<Person> findAll() {System.out.println("findAll dao");return null;}@Overridepublic void save(Person person) {System.out.println("save dao");}
}

Spring整合SpringMVC的框架a

(1)web.xml中配置前端控制器DispatcherServlet
SpringMVC的核心就是DispatcherServlet,DispatcherServlet实质也是一个HttpServlet。DispatcherSevlet负责将请求分发,所有的请求都有经过它来统一分发。
(2)web.xml中配置编码过滤器CharacterEncodingFilter
在 SpringMVC 中,框架直接给我们提供了一个用来解决请求和响应的乱码问题的过滤器 CharacterEncodingFilter
(3)web.xml中配置编码监听器ContextLoaderListener
web.xml中的配置文件中ContextLoaderListener作为监听器,会监听web容器相关事件,在web容器启动或者关闭时触发执行响应程序

  • 配置DispatcherServlet,CharacterEncodingFilter,ContextLoaderListener
<!--设置配置文件的路径  service dao--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!--解决中文乱码的过滤器--><filter><filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--配置Spring的监听器,默认只加载WEB-INF目录下的applicationContext.xml配置文件--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!--配置前端控制器  controller--><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--加载springmvc.xml配置文件--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><!--启动服务器,创建该servlet--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping>

Spring整合SpringMVC的框架b

  • (1)springmvc中配置视图解析器,组件扫描,注解驱动
    (2)配置springmvc对资源文件的放行
    (3)编写一个PersonController测试
    (4)编写一个list.jsp页面进行展示数据
  • 配置springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!--springmvc是web层  UserController  @Controller --><!-- 打开组件扫描--><context:component-scan base-package="com.wzx"><!-- 只处理带@Controller的请求--><context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan><!--配置的视图解析器对象 /WEB-INF/pages/success.jsp --><bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".jsp"/></bean><!--过滤静态资源   .js .css png--><mvc:resources location="/css/" mapping="/css/**" /><mvc:resources location="/images/" mapping="/images/**" /><mvc:resources location="/js/" mapping="/js/**" /><!--开启SpringMVC注解的支持 @RequestMapping @RequestBody @ResponseBody--><mvc:annotation-driven/>
</beans>
  • PersonController
@Controller
@RequestMapping("/person")
public class PersonController {@Autowiredprivate IPersonService personService;@RequestMapping(path="/list",method = RequestMethod.GET)public String list(Model model){//显示所有的person数据List<Person> list = personService.findAll();System.out.println("list() list= "+list);//数据放在Model对象,由Model传给页面model.addAttribute("list",list);//参1 key  参2 valuereturn "list";}
}
  • list.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html>
<head><title>Title</title>
</head>
<body>
<table border="1px" width="100%"><c:forEach items="${list}" var="person"><tr><td>${person.id}</td><td>${person.name}</td><td>${person.money}</td></tr></c:forEach>
</table>
</body>
</html>
  • Service由于有junit测试基本不会有bug
  • Web层 使用log4j 打印 请求参数,响应给页面的数据

配置Mybatis

  • (1)SqlMapConfig.xml
    指定四大信息:账号密码ip端口
    指定domain别名
    指定映射文件
  • (2)编写测试
    保存
    查询
  • SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- 别名  com.wzx.domain.Person  person--><typeAliases><package name="com.wzx.domain"/></typeAliases><environments default="mysql"><environment id="mysql"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/ssm"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments><!-- 核心 配置文件扫描到映射文件--><mappers><package name="com.wzx.dao"/></mappers>
</configuration>
  • TestMyBatis
public class TestMyBatis {private  SqlSession session;@Beforepublic void init(){// 加载配置文件InputStream in = TestMyBatis.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml");// 创建SqlSessionFactory对象SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);// 创建SqlSession对象session = factory.openSession();}@Afterpublic void destory(){session.commit();session.close();}@Testpublic void test01(){//最核心对象是session// System.out.println(session);//Mybastis的特点是sql与代码是分开的,需要映射文件IPersonDao dao =  session.getMapper(IPersonDao.class);List<Person> list = dao.findAll();System.out.println(list);}@Testpublic void test02(){//最核心对象是sessionIPersonDao dao =  session.getMapper(IPersonDao.class);dao.save(new Person("tony",200.00));}
}
  • IPersonDao.xml

<?xml version="1.0" encoding="UTF-8" ?> select * from person;

<insert id="save" parameterType="person">insert into person (name,money)values(#{name},#{money})
</insert>

Spring整合MyBatis框架

  • (1)Spring整合MyBatis需要添加整合包
  • (2)什么是mybatis-spring
    MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和 SqlSession 并注入到 bean 中
    不需要调用 session.getMapper(IpersonDao.class)
  • session.commit()
  • session.close()
  • pom.xml
    <dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.0</version></dependency>
  • applicationContext.xml
    <!-- 四大信息--><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ssm"></property><property name="driverClass" value="com.mysql.jdbc.Driver"></property><property name="user" value="root"></property><property name="password" value="123456"></property></bean><!-- session工厂--><bean id="sqlSessionFactory"  class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><!-- com.wzx.domain.Person  person--><property name="typeAliasesPackage" value="com.wzx.domain"/></bean><!-- IPersonDao.xml  IPersonDao.java--><bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.wzx.dao"/><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/></bean>
  • TestDataSource
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class TestDataSource {private static final Logger log = Logger.getLogger(TestDataSource.class.getName());@AutowiredIPersonDao dao;@Testpublic void test01() throws SQLException {List<Person> data = dao.findAll();System.out.println(data);}@Testpublic void test02() throws SQLException {Person p =  new Person("hello",200.00);dao.save(p);}}

Spring管理事务

  • 表达式设置有哪些serivce方法需要事务管理
  • 通知设置 增删改查业务方法 具体对应的事务
  • 运行Test
  • applicationContext.xml
<!--配置Spring框架声明式事务管理--><!--配置事务管理器--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="find*" read-only="true"/><tx:method name="*" isolation="DEFAULT"/></tx:attributes></tx:advice><!--配置AOP增强--><aop:config><aop:pointcut id="service" expression="execution(* com.wzx.service.impl.*ServiceImpl.*(..))"/><aop:advisor advice-ref="txAdvice" pointcut-ref="service"/></aop:config>
  • TestPersonService
@Testpublic void test03(){List<Person> personList = new ArrayList<>();personList.add(new Person("jack",100.00));personList.add(new Person("rose",200.00));personList.add(new Person("tony",300.00));personService.savePersons(personList);}

SSM之环境整合(idea+maven 收藏起来以后用)相关推荐

  1. 【SSM】框架整合基于maven(笔记一)

    环境搭建 1.新建一Maven项目,添加web的支持 2.导入相关的pom依赖 <dependencies><!--Junit--><dependency>< ...

  2. 第一个SSM整合的Maven入门级项目(超详细步骤)

    环境 jdk:1.8 Tomcat:7.0 本地mysql:8.0 Eclipse:Eclipse Jee Photon Spring:4.3.8 AOP:1.8.0 mybatis:3.3.0 My ...

  3. SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)

    登录 | 注册 收藏成功 确定 收藏失败,请重新收藏 确定 查看所有私信查看所有通知 暂没有新通知 想要绕过微信小程序开发中的坑吗?不妨来听这个,今晚8点,1小时帮你搞定! 14小时以前 CSDN日报 ...

  4. ssm如何支持热部署_IntelliJ IDEA基于SpringBoot如何搭建SSM开发环境

    之前给大家在博文中讲过如何通过eclipse快速搭建SSM开发环境,但相对而言还是有些麻烦的,今天小编给大家介绍下如何使用IntelliJ IDEA基于SpringBoot来更快速地搭建SSM开发环境 ...

  5. Maven项目+MVC三层架构+Mysql+Tomcat+私教预约系统前后端(私教、用户、管理员)+可以用于学习SSM框架、javaweb、maven项目入门

    Maven项目+MVC三层架构+Mysql+Tomcat+私教预约系统前后端(私教.用户.管理员)+可以用于学习SSM框架.javaweb.maven项目入门 可以用于课程设计.毕业设计的知识点入门学 ...

  6. java gdal_2、JAVA集成GDAL-JAVA开发环境整合GDAL

    二.JAVA开发环境整合GDAL 1.新建一个SpringMvc或者SpringBoot项目 跳过这个过程,大家根据IDE自行完成 2.项目资源结构 采用资源管理gdal文件,通过Maven加载gda ...

  7. ssm mysql过程抛错_下列关于 SSM 框架的整合说法错误的是 。 ( ) B : 。 C : 。 D : 。_学小易找答案...

    [单选题]对于两方向出站信号机为防止闪双绿灯现象,电路采取的措施是( ) [单选题]MyBatis 的更新操作有关说发错误的是 . ( ) [单选题]SJ电路中接入FDGJ第三组前接点的作用是( ) ...

  8. 数据源管理 | PostgreSQL环境整合,JSON类型应用

    本文源码:GitHub·点这里 || GitEE·点这里 一.PostgreSQL简介 1.和MySQL的比较 PostgreSQL是一个功能强大的且开源关系型数据库系统,在网上PostgreSQL和 ...

  9. Jenkins持续集成环境, 如何自定义 maven repositories

    假设自定义的仓库路径为"/opt/repository",那么在"系统管理-系统设置"中,修改"全局MAVEN_OPTS"的值为如下的内容: ...

最新文章

  1. 与HTTP关系密切的协议:IP、TCP、DNS
  2. 过滤一批数据_手把手教你学numpy,从此数据处理不再慌【三】
  3. etcd工作原理和CentOS 7部署指南
  4. 在什么时候需要使用“常引用”?
  5. 学习面试题Day08
  6. Java高级补充(Socket服务端、客户端)、Handler类、安卓Socket传数据、WebView
  7. uva 12627——Erratic Expansion
  8. 前端学习(2788):完成图片商品数据页面渲染
  9. 非多态的继承情况下,基类指针可以指向派生类对象么?
  10. rust石头墙几个c4_石头在景观中的运用
  11. ORM框架 之 Entity Framework
  12. C# list删除 另外list里面的元素_[Python]列表(list)操作
  13. html——windows.onload()与$(document).ready()区别
  14. ffmpeg 从内存中读取数据(或将数据输出到内存)
  15. DAO 的具体内涵与概念
  16. Windows 7 SP1相关资源下载
  17. 科技巨头们在SaaS市场“雷声大雨点小”背后的症结
  18. 「中国好SaaS」报名进行中!「面基」买方关键决策人
  19. 【OpenCV入门教程】图像加噪
  20. 读书笔记--项亮《推荐系统实践》第七章

热门文章

  1. Windows系统icmp协议的打开与关闭
  2. Redis-高可用方案
  3. NETDMIS5.0测针转换技巧2023
  4. php 实现无限极分类树 (引用和递归)
  5. 214 Devu和鲜花(容斥原理,隔板法)
  6. 现代C++新特性 非静态数据成员默认初始化
  7. Linux使用sed命令删除文件中指定内容
  8. NanoPi K2 (Amlogic S905) 自行编译内核启动不起来
  9. Java错误与问题合集
  10. Java开发就业前景到底怎么样?