SSM

Posted qq1053610472

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSM相关的知识,希望对你有一定的参考价值。

 第一章 初始 MyBatis

1.1. 框架技术   

  1. 为什么学习框架技术

    因为框架是一系列CSS文件的集合体,包含了基本的元素重置,页面排版,网络布局,表单样式,通用规则等代码块。使用框架,可以简化工作,提高工作效率。

  2. 框架的概念

    框架(Framework)是一个提供了可重用的公共结构的半成品。 它为我们构建了新的应用程序提供了极大的便利。

  一方面提供了可以拿来就用的工具,更重要的是,提供了可重用的设计。

  3. 主流框架的介绍   

  1).Struts 2框架  

       Struts 2以及WebWork优秀的设计思想为核心,吸收了Struts框架的部分优点,提供了一个更加整洁的基于MVC设计模式实现的Web应用程序。它引入了几  
    个新的框架特性:从逻辑中分离出横切关注点拦截器,减少或者消除配置文件,贯穿整个框架的强大表达式语言,支持可变更和可重用的基于MVC模式的标签APl等。  
    Struts 2充分利用了从其他MVC框架学到的经验和教训,是整个框架更加清晰、更加灵活。

  2).Hibernate 框架  

      Hibernate是一个优秀的持久化框架,负责简化对象数据保存到数据库中,或从数据库中读取数据并保存封装到对象的工作。Hibernate通过简单配置和    
    编码即可替代JDBC繁琐的程序代码。Hibernate已经成为当前主流的数据库持久化框架,被广泛应用。

  3).Spring框架  
      Spring也是一个开源框架。它的目标是使现有的javaEE技术更容易使用和促进良好的编程习惯。他是一个轻量级的框架,渗透了javaEE技术的方方面面。它主要作为依赖注入容器和AOP实现存在,还提供了声明式事务、对DAO层的支持简化开发的方方面面。它主要作为依赖注入容器和AOP实现存在还提供了声明式事务、对Dao层的支持简化开发等功能。 Spring还可以很方便的与SpringMVC、Struts2、MyBatis、Hibenate等框架集成,其中大名鼎鼎的ssm集成框架指的就是基于SpringMVC+Spribg+Mybatis的技术框架,使用这个集成框架将使用我们的应用程序更加健壮、稳固、轻巧和优雅,这也是当前最流行的java技术框架。

  4).SrpingMVC框架
      SpirngMVC是Spring框架提供的构建Web应用程序的全功能MVC模块,属于SpringFramework的后续产品,已经融合在Spring Web Flow里面,是结构最清晰的MVC Model2 的实现。并且拥有高度的可配置性,支持多种视图技术。还可以进行定制化开发,相当灵活。此外,Spring整合SpringMVC可以说是无缝集成,是一个高性能的架构模式。现在越来越广泛地应用于互联网应用的开发中。
  5).Mybatis框架
      Mybatis是一个优秀的数据持久层框架,在实体类和SQL语句之间建立映射关系,是一种半自动化的ORM实现。
    其封装性要低于Hibernate,性能优秀,并且小巧,简单易学,现在应用也越来越广泛。

1.2. MyBatis 介绍及其环境搭建 

1.2.1 数据持久化概念

数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称.数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等。cmp和Hibernate只是对象模型到关系模型之间转换的不同实现。

1.2.2 MyBatis框架及ORM  

  1.Mybatis简介

   MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。

      MyBatis参考资料官网:https://mybatis.github.io/mybatis-3/zh/index.html

    2.什么是ORM

      ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。

技术分享图片

    3.MyBatis是ORM解决方法

    基于ORM,MyBatis在对象模型和关系数据库的表之间建立了一座桥梁,通过MyBatis建立SQL关系映射,以便捷的实现数据存储、查询、更改和输出等操作。

 1.2.3 MyBatis环境搭建

  

1、MyBatis的作用:

  简单的说MyBatis实现的是DAO层,通过XML文件配置SQL,映射到PO。

2、需要准备的引用包

  mybatis-3.2.8.jar:myBatis框架使用

  ojdbc6.jar:数据库连接

3、结构分析

  1)需要配置文件连接数据库;

  2)需要公共方法提供数据库连接的使用;

  3)PO:持久对象

  4)数据查询SQL配置XML文件;

  5)对外接口;

4、结构搭建

示例如下:

技术分享图片

文件说明:

1)数据库配置文件:configuration.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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="jdbc"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="oracle.jdbc.OracleDriver"/>
                <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
                <property name="username" value="phonesurvey"/>
                <property name="password" value="world"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="nankang/dao/agentMapper.xml" />    
    </mappers>
</configuration>
技术分享图片

 两个配置:

一、连接数据库;

二、系统mapper注册;

 

2)使用连接通用文件:SqlSessionHelper.java

技术分享图片
package nankang.util;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class SqlSessionHelper {
    
    public static SqlSessionFactory getSessionFactory(){
        SqlSessionFactory sessionFactory = null;
        String resource= "nankang/configuration.xml";
        try{
            sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader(resource));
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return sessionFactory;
    }
}
技术分享图片

 使用SqlSessionFactory创建连接。


3)PO对象:

技术分享图片
package nankang.po;

public class Agent {

    private String agentId;
    private String companyCode;
    private String loginName;
    private String name;
    
    
    public String getAgentId() {
        return agentId;
    }
    public void setAgentId(String agentId) {
        this.agentId = agentId;
    }
    public String getCompanyCode() {
        return companyCode;
    }
    public void setCompanyCode(String companyCode) {
        this.companyCode = companyCode;
    }
    public String getLoginName() {
        return loginName;
    }
    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    
}
技术分享图片

 这个没什么好说的,就是一个对象及属性。

如果查询SQL中没有查找对应的字段,则为空。

4)PO的映射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="nankang.dao.AgentMapper">
    
    <select id="selectAgentById" parameterType="HashMap" resultType="nankang.po.Agent">
        select agentId,companyCode,loginName,name from Agent where AgentId=#{id}
    </select>

</mapper>
技术分享图片
技术分享图片
package nankang.dao;

import nankang.po.Agent;

public interface AgentMapper {
    
    public Agent selectAgentById(String Id);

}
技术分享图片

对外使用接口,XML文件相当于实现; 

SQL语句,查询的多,也没关系,多余的字段不会映射。

 

5)使用:

技术分享图片
package nankang.test;

import nankang.dao.AgentMapper;
import nankang.po.Agent;
import nankang.util.SqlSessionHelper;

import org.apache.ibatis.session.SqlSession;

public class test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        
        try{
            SqlSession sqlSession = SqlSessionHelper.getSessionFactory().openSession();
            
            AgentMapper agentMapper = sqlSession.getMapper(AgentMapper.class);
            Agent agent = agentMapper.selectAgentById("SHNKAG0000000005");
            
            System.out.println(agent.getName());
        }catch(Exception ex){
            System.out.println(ex.getMessage());
        }

    }

}
技术分享图片

首先创建一个SQLSession,然后使用这个Session创建Mapper,这块应该放在BO中;

 

MyBatis依赖包中文件说明
asm-3.3.1.jar 操作java字节码的类库
cglib-2.2.2.jar  用来动态集成java类或实现接口
commons-logging-1.1.1.jar  用于通用日志处理
javassist-3.17.1-GA.jar 分析、编辑和创建java字节码的类库  
log4j-1.2.17.jar 日志系统
slf4j.api-1.7.5.jar 日志系统的封装,对外提供统一的API接口
slf4j-log4j12-1.7.5jar slf4j对log4j的相应驱动,完成sl4j绑定log4j
   

 

 

 

 

 

 

1.MyBatis框架的优点

  1. 与JDBC相比,减少了50%以上的代码量。
  2. MyBatis是最简单的持久化框架,小巧并且简单易学。
  3. MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,并可重用。
  4. 提供XML标签,支持编写动态SQL语句。
  5. 提供映射标签,支持对象与数据库的ORM字段关系映射。

 2.MyBatis的缺点

SQL语句的编写工作量较大,对开发人员编写SQL语句的功底有一定要求。

SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

3.MyBatis框架适用场合

MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案,对性能的要求很高,或者需求变化较多的项目,如互联网项目,那么MyBatis是个不错的选择。

1.3. MyBatis的基本要素—–核心对象 

MyBatis基本三要素:

1.核心接口和类

2.MyBatis核心配置文件(mybatis-config.xml).

3.SQL映射文件(mapper.xml).

核心对象:

1.SqlSesionFactoryBuilder

2.SqlSessionFactory 

SqlSessionFactory简单的理解就是创建SqlSession实例的工厂。

3.SqlSession

SqlSession是用于执行持久化操作的对象,类似于JDBC中的Connection。

 

 











以上是关于SSM的主要内容,如果未能解决你的问题,请参考以下文章

SSM框架——使用MyBatis Generator自动创建代码

SpringBoot整合SSM(代码实现Demo)

SSM开发 | 合理配置 mybatis-generator,隔离机器生成代码和额外增加代码

SSM框架——使用MyBatis Generator自动创建代码

SSM框架-使用MyBatis Generator自动创建代码

一份基于SSM框架实现的支付宝支付功能,附完整源代码