MyBatis知多少(7)持久层】的更多相关文章

前言 前两篇文章分别讲解了JDBC和Mybatis的基本知识,以及自定义持久层框架的设计思路,从这篇文章开始,我们正式来实现一个持久层框架. 新建一个项目 首先我们新建一个maven项目,将其命名为IPersistence,创建以下目录结构: 完成目录创建工作后,我们首先在pom.xml文件中引入相关依赖: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://…
前言 上一篇文章讲到了JDBC的基本用法及其问题所在,并提出了使用Mybatis的好处,那么今天这篇文章就来说一下该如何设计一个类似Mybatis这样的持久层框架(暂时只讲思路,具体的代码编写工作从下一篇文章开始). 从使用端的角度来设计 从使用端的角度来看,我们需要做一些配置工作,原理等同于使用Mybatis框架时所进行的配置.这其中包括以下步骤: 引入自定义持久层框架的jar包. 提供存放数据库核心配置的信息. 提供sql配置信息(包括sql语句.参数类型和返回类型). 这里暂时不讲这些工作…
前言 说起Mybatis,相信大家都不会感到陌生,它是一款优秀的持久层框架,应用于java后端开发中,为客户端程序提供访问数据库的接口. 我们都知道,JDBC是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法.这也就是Mybatis所具备的功能,那既然已经有了JDBC了,为什么还要用Mybatis呢? 原因很简单,因为单纯使用JDBC进行开发会出现效率低下.耗费资源及影响程序拓展性等问题. JDBC基本用法及问题分析 首先来看一下使用JDBC…
前言 接上文,这里只是出于强迫症,凭借着半年前的笔记来把之前没写完的文章写完,这里是最后一篇了. 前面自定义的持久层框架存在的问题 Dao层若使用实现类,会存在代码重复,整个操作的过程模版重复(加载配置文件.创建sqlSessionFactory.生产sqlSession) 解决思路 使用代理模式生成Dao层接口的代理实现类(去掉原Dao层的代理实现类) 代码实现 在IPersistence_test项目中添加Dao层及接口类: 1 package com.hardy.dao; 2 3 impo…
前言 没想到会等到半年以后才来写这篇文章,我已经不记得当初自己想要在这篇文章中写什么了,还好有一些零散的笔记留着,就对照着上一篇文章及零散的笔记,把内容给补充完吧. 完善CRUD方法 完善DefaultSqlSession类实现查询单个及查询多个的接口 1 package com.hardy.sqlSession; 2 3 import com.hardy.pojo.Configuration; 4 import com.hardy.pojo.MappedStatement; 5 import…
前言 上一篇文章我们完成了生产sqlSession的工作,与数据库的连接和创建会话的工作都已完成,今天我们可以来决定会话的内容了. 封装CRUD操作 首先我们需要创建一个SqlSession接口类,在其中定义会话的内容接口,同样,今天所提及的类都存放在"sqlSession"包下,SqlSession接口类的代码如下所示: 1 package com.hardy.sqlSession; 2 3 import java.sql.SQLException; 4 import java.ut…
前言 上一回我们完成了数据库配置文件的读取和解析工作,有了这些准备工作,我们就可以与数据库创建连接和会话了,所谓sqlSession就是数据库的会话,一切增删查改操作都是在与数据库的会话中完成,下面我们来讲一些这方面的知识. 生产sqlSession.与数据库进行会话 这里我们会使用工厂模式,我们会用到三个类:SqlSessionFactoryBuilder(用于创建工厂对象).SqlSessionFactory(sqlSession的工厂接口)和DefaultSqlSessionFactory…
Mybatis技术特点: 好处: 通过直接编写SQL语句,可以直接对SQL进行性能的优化: 学习门槛低,学习成本低.只要有SQL基础,就可以学习mybatis,而且很容易上手: 由于直接编写SQL语句,所以灵活多变,代码维护性更好. 缺点: 不能支持数据库无关性,即数据库发生变更,要写多套代码进行支持,移植性不好. Mysql:limit Oracle:rownum 需要编写结果映射. Hibernate技术特点: 好处: 标准的orm框架,程序员不需要编写SQL语句. 具有良好的数据库无关性,…
MyBatis是什么 MyBatis是Java的持久层框架,GitHub的star数高达15.8k,是Java技术栈中最热门的ORM框架之一.它支持自定义SQL.存储过程以及高级映射,可以通过XML或注解来配置和映射原始类型.接口和Java POJOs为数据库中的记录. POJOs,Plain Old Java Objects,纯的传统意义的Java对象,最基本的Java Bean只有属性加上属性的get和set方法. 安装 Maven pom.xml: <dependency> <gr…
持久层是适合使用MyBatis的地方.在面向对象的系统中,持久层主要关注对象(或者更精确地说应该是存储在那些对象中的数据)的存取.在企业应用程序中持久层通常用关系数据库系统来存储数据,虽然某些情况下其他持久的数据结构或者介质也可能使用.如某些系统就可能会使用简单的以逗号分隔数据的平板文件或XML文件.考虑到企业应用程序的持久化策略往往具有异质性,因此持久层需要关注的第二个问题就是抽象.持久层应该隐藏关于数据如何被存储以及如何被取出的所有细节.这样的细节决不能暴露 给应用程序的其他层. 为更好地理…