MyBatis框架

MyBatis框架

框架阶段:基础阶段 ->应用阶段

需要背的东西多(不要去死记硬背,根据以前学的内容理解去记忆)比较多。

kgcnews:JSP + Servlet + DAO模式(映射)

// Servlet中目前是大量的多重if语句  opr来进行控制处理
//接收到的参数都是字符串类型,每次都要进行相应转换
// 跳转页面,转发:request.getRe...
//添加
String sql = "insert into ....?,?,?";
Object[]param = {xx,xx,xx};

//查询
String sql = "select xx, xxx,xx from xxx";
while(rs.next()){
	rs.getxx();
}

1. 框架技术的介绍

1.1 框架技术的优点

框架是一个应用程序的半成品,提供可重用的公共结构,按一定规则组织的一组组件。

如果要编写一个PPT或者简历,使用模板有如下的优点。

1.不用考虑布局,排版等,提高效率;

2.可专心在简历内容上;

3.结构统一,便于人事阅读;

4.新手也可以作出专业的简历。

反之我们开发中,如果使用框架也是可以有类似于上方的这些优点。

不用考虑性能和扩展性等方面的问题,提高效率;

可以专心在项目应用业务上,而非环境和系统设计上;

项目结构统一,便于团队开发!

新手也可以开发出专业的项目。

1.2 主流后台开发框架(三层架构)

Spring Boot

表现层:Struts2,Spring MVC
业务逻辑层:Spring
数据访问层:Hibernate,MyBatis,Spring Data

S(Spring MVC)S(Spring)M(MyBatis)

S(Struts2)S(Spring)H(hibernate)

不要学成墨守成规的书呆子,这些框架并非一定要按照上方的形式组合,它们都是独立的框架,你项目需要是什么样,就根据情况去进行技术选型(架构师)

2. MyBatis框架的介绍

2.1 数据持久化的概念和ORM原理

ORM:(Object Relational Mapping) 对象关系映射 思想

主要内容:在编写程序的时候,使用面向对象的思想来进行数据使用,而在数据存储的时候,使用关系想数据库来进行存储。
【数据库表】   ->  【Java类】
  表字段      ->     类属性
一条条数据     ->    类的对象

在程序运行过程中,内存中的瞬时态数据会和持久态的数据进行转换,瞬时态->持久态(数据持久化),这个时候存储数据的对象我们称之为持久化对象。
在这里插入图片描述

ORM的组成如下:

在持久化对象上执行基本的增,删,改,查操作

对持久化对象提供一种查询语言或者API

对象关系映射工具

提供与 事务对象交互,执行检查,延迟加载以及其他优化功能

2.2 MyBatis的概念

ibatis ->mybatis
在这里插入图片描述

ibatis ->mybatis

Apache的产品,都是在Apache开源社区上开源的,近几年产品开始在各个开源平台公开开源。

2010年,它被迁移到了Google Code开源平台,被改名了。

2013年,又从Google Code迁移到了GitHUB开源平台。

在这里插入图片描述

它是一个半自动的ORM框架,它不再是直接将对象和表进行映射,而是将对象和SQL语句进行映射。

全自动的ORM框架:对象 <->数据表(对象怎么变,数据表跟着变<sql不用写>)

半自动ORM, MyBatis: 保证灵活性 对象 <-SQL语句 -> 数据表

2.3 MyBatis环境搭建

下载 :![在这里插入图片描述](https://img-blog.csdnimg.cn/20190722201339591.png)

导包:

在这里插入图片描述

编写 sql 映射

2.4 MyBatis和JDBC的区别和联系

优点和缺点:【面试题】
优点:

与JDBC相比,减少了50%以上的代码量(映射方面的代码量)

最简单的持久化框架,小巧并简单易学。

SQL代码从程序代码中彻底分离,可重用。

提供XM标签,支持编写动态SQL(后期知识点 以前有条件参数可能非必填 那么一堆 的if语句可以通过动态SQL优化)

提供映射标签,支持对象与数据库的ORM字段映射。

MyBatis因为是面向SQL的映射,所以灵活性比较高,SQL的性能也由我们自己来决定。

缺点:

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

数据库移植性差(假设现在数据库更换为了Oracle,SQL语句不一致,那么就需要再编写另一套SQL映射文件)

3. MyBatis的组件

3.1 MyBatis核心API

在这里插入图片描述

SqlSessionFactory:它是SQL会话工厂,用于产生和数据库的会话对象。

它的生命周期:全局,每一个MyBatis应用都有且仅有一个SqlSessionFactory实例(单例:单个实例),它对应的就是一个envionment环境。

单例模式:【面试题】

在运行期间,单例类有且仅有一个实例向外提供!你在任何地方获取一个类的对象,它们都是同一个。

单例模式的组成:

私有化构造器( 防止外部使用构造器创建对象)。

提供静态的单例类实例变量(静态的信息只会随着类加载而加载,且被所有对象共享)

/**
 * 单例类-懒汉(饱汉)模式
 * @author Charles7c
 * 2019年7月22日 上午11:28:06
 */
public class Singleton {

	// 私有化构造
	private Singleton() {}
	
	// 提供静态的实例变量
	private static Singleton singleton;
	
	// 提供一个公共的静态的获取唯一的实例的方法
	public static Singleton getInstance() {
		// 懒汉模式 当有人需要唯一实例时才开始创建
		if(singleton == null) {
			singleton = new Singleton();
		}
		return singleton;
	}
}
/**
 * 单例类-懒汉(饱汉)模式
 * @author Charles7c
 * 2019年7月22日 上午11:28:06
 */
public class Singleton {

	// 私有化构造
	private Singleton() {}
	
	// 提供静态的实例变量
	private static Singleton singleton;
	
	// 提供一个公共的静态的获取唯一的实例的方法
	public static Singleton getInstance() {
		// 懒汉模式 当有人需要唯一实例时才开始创建
		if(singleton == null) {
			singleton = new Singleton();
		}
		return singleton;
	}
}
懒汉模式和饿汉模式的区别:

懒汉模式在类加载时不会进行唯一实例的初始化,在获取时才进行初始化,所以空间浪费比较小。

饿汉模式在类加载时就会初始化,所以占用空间!

懒汉模式因为获取时需要判断然后初始化,所以效率比较低。

饿汉模式,在后期获取实例比较快。

懒汉模式有线程安全问题。

饿汉模式没有线程安全问题。

SqlSession核心会话对象,它是用来执行SQL映射语句的。

它的生命周期:线程(Thread)级别的,一次请求对应一个SqlSession!

在这里插入图片描述

SqlSession实例应用2:Mapper接口开发【推荐采用】:

创建Mapper接口

将Mapper.xml和接口进行绑定(binging)

​ Mapper.xml的namespace和接口的全类名一致。

​ xml中的SQL语句等信息要和接口中保持对应

将Mapper接口引入到核心配置文件

使用API操作

SqlSession sqlSession = null;
try {
    sqlSession = MyBatisUtils.getSqlSession();

    // 获取Mapper接口
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    List<User> userList = userMapper.getUserList();
    for (User user : userList) {
        System.out.println(user);
    }

    sqlSession.commit();
} catch (Exception e) {
    e.printStackTrace();
    sqlSession.rollback();
}finally {
    MyBatisUtils.closeSqlSession(sqlSession);
}

3.2 MyBatis核心配置文件

在这里插入图片描述

properties(属性):

​ 引入外部数据源文件(方便整个项目内的复用性和配置集中)

<!-- 引入外部properties配置信息 -->
<properties resource="db.properties"></properties>

....
<dataSource type="POOLED">
    <property name="driver" value="${mysql.driver}"/>
    <property name="url" value="${mysql.url}"/>
    <property name="username" value="${mysql.username}"/>
    <property name="password" value="${mysql.password}"/>
</dataSource>

直接在properties配置属性信息(方便在此文件中配置复用和集中)

<properties>
 	<property name="mysql.driver" value="com.mysql.jdbc.Driver"/>
    <property name="mysql.url" value="jdbc:mysql:///smbms"/>
    <property name="mysql.username" value="root"/>
    <property name="mysql.password" value="root"/>
</properties>

上方两个也可以集合使用

<properties resource="db.properties">
		<property name="xxx" value="xx"/>
	</properties>

如果这两种方式出现相同配置,那么外部引入的优先级要更高一些。

settings(后面介绍)
typeAliases(类型别名)
environments(环境配置):
mappers(映射器):
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值