MyBatis(一)

什么是框架:

框架(Framework)是整个或部分系统的可重⽤设计,表现为⼀组抽象构件及构件实例间交互的⽅法;另⼀种定义认为,框架是可被应⽤开发者定制的应⽤⻣架。前者是从应⽤⽅⾯,⽽后者是从⽬的⽅⾯给出的定义。
简⽽⾔之,框架其实就是某种应⽤的半成品,就是⼀组组件,供你选⽤完成你⾃⼰的系统。简单说就是使⽤别⼈搭好的舞台,你来做表演。⽽且,框架⼀般是成熟的,不断升级的软件。

框架要解决的问题:

框架要解决的最重要的⼀个问题是技术整合的问题,在 J2EE 的框架中,有着各种各样的技术,不同的软件企业需要从 J2EE 中选择不同的技术,这就使得软件企业最终的应⽤依赖于这些技术,技术⾃身的复杂性和技术的⻛险性将会直接对应⽤造成冲击。⽽应⽤是软件企业的核⼼,是竞争⼒的关键所在,因此应该将应⽤⾃身的设计和具体的实现技术解耦。这样,软件企业的研发将集中在应⽤的设计上,⽽不是具体的技术实现,技术实现是应⽤的底层⽀撑,它不应该直接对应⽤产⽣影响。

在这里插入图片描述

MyBatis框架概述

MyBatis 本是apache的⼀个开源项⽬iBatis,2010年这个项⽬由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11⽉迁移到Github。MyBatis是⼀个优秀的基于 Java 的持久层框架,它内部封装了 JDBC,使开发者只需要关注 SQL本身,⽽不需要花费精⼒去处理例如注册驱动、创建连接、创建statement、⼿动设置参数、结果集检索等繁杂的过程。MyBatis通过 xml 或注解的⽅式将要执⾏的各种 statement(StatementPreparedStatemntCallableStatement)配置起来,并通过 Java 对象和Statement 中的 SQL 的动态参数进⾏映射,⽣成最终执⾏的 SQL 语句,最后由 MyBatis 框架执⾏SQL 并将结果映射成 Java对象并返回。采⽤ ORM 思想解决了实体和数据库映射的问题,对 JDBC 进⾏了封装,屏蔽了 JDBC API 底层访问细节,使我们不⽤与 JDBC API 打交道,就可以完成对数据库的持久化操作。为了我们能够更好掌握框架运⾏的内部过程,并且有更好的体验,下⾯我们将从⾃定义 MyBatis框架开始来学习框架。此时我们将会体验框架从⽆到有的过程体验,也能够很好的综合前⾯阶段所学的基础。

JDBC问题分析(MyBaties的优势)

  1. 数据库链接创建、释放频繁造成系统资源浪费从⽽影响系统性能,如果使⽤数据库链接池可
    解决此问题。
  2. Sql 语句在代码中硬编码,造成代码不易维护,实际应⽤ sql 变化的可能较⼤,sql 变动需要
    改变 java 代码。
  3. 使⽤ preparedStatement 向占有位符号传参数存在硬编码,因为 sql 语句的 where 条件不
    ⼀定,可能多也可能少,修改 sql 还要修改代码,系统不易维护。
  4. 对结果集解析存在硬编码(查询列名),sql 变化导致解析代码变化,系统不易维护,如果
    能将数据库记录封装成 pojo 对象解析⽐较⽅便。


MyBatis入门: 1.引入依赖 2.xml配置文件 Configuration 通常: classpath下 的 SqlMapConfig.xml 3.数据库准备 mysql.sql 4.实体类准备 User 属性名和user表中的字段名 要一致 5.准备UserDao接口, 提供查询所有的方法 6.映射文件Mapper, 位置和UserDao接口位置一致 文件名 UserDao.xml 7.在Configuration配置文件中 注册mapper 8.写测试文件测试
public static void main(String[] args) throws Exception{
	// 1.读取配置⽂件
	 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
	 // 2.创建 SqlSessionFactory 的构建者对象
	 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
	 // 3.使⽤构建者创建⼯⼚对象 SqlSessionFactory
	 SqlSessionFactory factory = builder.build(in);
	 // 4.使⽤ SqlSessionFactory ⽣产 SqlSession 对象
	 SqlSession session = factory.openSession();
	 // 5.使⽤ SqlSession 创建 dao 接⼝的代理对象
	  UserDao userDao = session.getMapper(UserDao.class);
	 // 6.使⽤代理对象执⾏查询所有⽅法
	 List<User> users = userDao.findAll();
	 for (User user : users) {
	 System.out.println(user);
	 }
	 // 7.释放资源
	 session.close();
	 in.close();
 }

自定义MyBatis
Resources - 类
SqlSessionFactoryBuilder - 类
SqlSessionFactory - 接口
SqlSession - 接口

设计模式:
1.单例
2.装饰者模式
3.代理模式
4.工厂模式
5.创建者模式
6.适配器模式

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值