mybatis
文章平均质量分 73
wondertang
专注同城极速配送
展开
-
mybatis详解-(1)简介
1.什么是 MyBatis?MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。2.下载安装要使用原创 2017-10-25 17:59:14 · 260 阅读 · 0 评论 -
mybatis详解-(22)整合第三方缓存Ehcache
前面几篇文章剖析了mybatis的缓存原理,发现mybatis提供的缓存是非常简陋的,用HashMap进行存储。 有专业做缓存的,那么就使用专业的缓存框架吧,这里使用Ehcache来作为mybatis的缓存。1.引入jar<!-- 添加Ehcache核心包 --><dependency> <groupId>net.sf.ehcache</groupId> <artifactId>原创 2017-12-21 17:42:04 · 638 阅读 · 0 评论 -
mybatis详解-(10)别名
前面已经介绍到了参数的传递,但是在真个过程中都使用的是全类名。本篇介绍使用别名:1.创建实体类package org.mybatis.typeAliases;import org.apache.ibatis.type.Alias;public class Employee { private Integer id; private String lastName; priva原创 2017-12-12 18:20:38 · 404 阅读 · 0 评论 -
mybatis详解-(11)配置多个数据源
开发过程中会使用到多个数据源,如本地数据源,测试环境数据源,生产环境数据源。并且不同环境下数据源的各项配置也都不一样,如果不配置多个数据源,可能每次测试都要手动的改动很多的数据。mybatis提供了可以配置多个数据源的标签environments,在该标签下可以配置多个environment。 这里展示两个不同数据源之间的切换:1.创建实体类Employeepackage org.mybatis.原创 2017-12-13 18:15:25 · 2472 阅读 · 2 评论 -
mybatis详解-(23)spring整合
Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。 本篇还是以示例的形式介绍一下spring是如何整合mybatis。1.原创 2017-12-25 13:24:25 · 270 阅读 · 0 评论 -
mybatis详解-(13)注解操作查询
前面讲述的内容中,基本都是按照同样的步骤1)创建接口类,2)创建主配置文件,3)创建接口映射文件。在接口类中定义实现的接口功能,在映射配置文件中写具体的完成接口类容的sql语句,然后在主配置文件中应用映射配置文件操作相关的操作。mybatis也提供了一套通过接口操作数据请求的注解,比如要完成一个查询操作,可以按照如下的步骤完成:1.创建实体类Employeepackage org.mybatis.a原创 2017-12-16 15:48:02 · 778 阅读 · 0 评论 -
mybatis详解-(12)配置多种数据库SQL解析
前一篇介绍了mybatis配置多个数据源,可以切换不同的数据库环境。有一种情况:比如一个系统中使用了多个数据源,系统该怎么判别每个sql语句使用的是哪种类型数据库的语法呢?mybatis提供了一种方法,可以在配置文件中指定每个sql语句使用的是哪种数据库语法,执行是可按照该数据库解析对应的sql。 该标签为<databaseIdProvider>,在mybatis的主配置文件中添加该标签,在该标签原创 2017-12-16 22:03:52 · 4294 阅读 · 0 评论 -
mybatis详解-(14)参数处理#和$
前面演示了Mybatis的部分属性,在操作数据库的时候sql中参数的传递都是使用#{},其实Mybatis还提供了${}处理参数的方式,也经常被使用。但是使用#{}和${}到底有什么区别呢,这篇做一个对比,主要以例子查看差别。1.创建实体类Employeepackage org.mybatis.dealParams;import org.apache.ibatis.type.Alias;@Ali原创 2017-12-17 19:07:49 · 333 阅读 · 0 评论 -
mybatis详解-(15)返回结果封装
前面介绍的内容查询结果基本都是返回一个数据,然后将数据对应某一个对象。本篇探索一下多种不同类型的返回结果,mybatis是如何封装的。1.返回list创建Employee对象package org.mybatis.returntype;import org.apache.ibatis.type.Alias;@Alias("empp")public class Employee { priv原创 2017-12-17 20:08:22 · 2165 阅读 · 0 评论 -
mybatis详解-(16)分步查询及延迟加载
前面文章介绍了都是一个sql语句完成所有的查询操作,包括在执行联合查询的时候也是一个sql语句完成查询,然后将查询结果通过resultMap进行封装。mybatis也提供了分步查询的功能,在完成一个操作之后,将查询的结果使用到第二个三个查询参数中完成所有的查询。具体如何实现,还是结合示例做展示:分步查询1)association 使用association实现分步查询操作。创建实体Employee原创 2017-12-18 14:13:42 · 925 阅读 · 0 评论 -
mybatis详解-(9)参数传递
前面两篇分别介绍了mybatis的增删改查和主键生成,遇到在查询中使用多个查询条件的情况,使用前面的sql无法解决,运行程序出现错误。这一篇主要介绍一下mybatis查询sql的参数传递问题。1.单个参数创建对象类Employeepackage org.mybatis.crud;public class Employee { private Integer id; private S原创 2017-10-27 10:31:31 · 334 阅读 · 0 评论 -
mybatis详解-(8)配置自增主键
延续上一篇增删改查,在添加的时候使用的是数据库的自增主键,保存完成之后,在程序中是获取不到对象id的。我们打印保存后的对象如下:1.未配置主键自增 @Test public void testMybatisAdd() {//测试添加 SqlSessionFactory sqlSessionFactory = null; SqlSessio原创 2017-10-26 16:57:13 · 1070 阅读 · 0 评论 -
mybatis详解-(7)增删改查
1.新建对象新建对象Employeepackage org.mybatis.crud;public class Employee { private Integer id; private String lastName; private String email; private String gender; public Integer getId() {原创 2017-10-26 16:38:41 · 227 阅读 · 0 评论 -
mybatis详解-(4)引入外部资源配置
本系列都使用maven构建,如果发现结构不一致,请变通创建相关文件和文件夹。 直接将数据库的配置写死在xml文件中对以后的实施维护产生较大的挑战,所以将这些配置文件放在外部资源文件中是较好的选择。mybatis通也提供了读取外部资源文件的方案1.新建文件db.properties置于resources下 driver=com.mysql.jdbc.Driver url=jdbc:mysq原创 2017-10-26 09:33:38 · 899 阅读 · 0 评论 -
mybatis详解-(18)一级缓存
MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。MyBatis 3 中的缓存实现的很多改进都已经实现了,使得它更加强大而且易于配置。默认情况下是没有开启缓存(二级缓存-全局缓存)的,除了局部的 session 缓存,可以增强变现而且处理循环依赖也是必须的。 局部session也就是说的一级缓存(本地缓存),本篇内容将对一级缓存做一下展示和介绍1.一级缓存效果下面先看一下原创 2017-12-19 18:22:45 · 239 阅读 · 0 评论 -
mybatis详解-(19)二级缓存
默认情况下是只开启了局部的sqlSession缓存(一级缓存),可以增强变现而且处理循环 依赖也是必须的。1.缓存配置要开启二级缓存,需要做一些配置 1)开启所有映射器中缓存配置: 将value设置为true<settings> <setting name="cacheEnabled" value="true"/></settings>2)需要在你的 SQL 映射文件中添加一行:<ca原创 2017-12-20 13:26:08 · 267 阅读 · 0 评论 -
mybatis详解-(20)缓存原理上
前面两篇文章通过示例的形式介绍和展示了mybatis的缓存效果和配置,也简单介绍了mybatis一级缓存是通过map实现的,二级缓存是通过namespace实现的。但是底层是怎么样的呢,笔者参考了一些文章,将部分的内容做一下转发:1.什么是一级缓存? 为什么使用一级缓存?每当使用MyBatis开启一次和数据库的会话,MyBatis会创建出一个SqlSession对象表示一次数据库会话。翻译 2017-12-20 18:33:32 · 215 阅读 · 0 评论 -
mybatis详解-(21)缓存原理下
MyBatis的二级缓存是Application级别的缓存,它可以提高对数据库查询的效率,以提高应用的性能。本文将全面分析MyBatis的二级缓存的设计原理。1.MyBatis的缓存机制整体设计以及二级缓存的工作模式 如上图所示,当开一个会话时,一个SqlSession对象会使用一个Executor对象来完成会话操作,MyBatis的二级缓存机制的关键就是对这个Executor对象做文章。如果用翻译 2017-12-20 18:48:47 · 186 阅读 · 0 评论 -
mybatis详解-(2)helloworld
本系列都是通过maven构建项目,如果不清楚maven的请先看我的maven系列 本次选用mybatis-3.2.1版本作为演示版本,log4j作为日志的实现,mysql作为数据库。 1.pom.xml配置mybatis包<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</原创 2017-10-25 18:18:41 · 291 阅读 · 0 评论 -
mybatis详解-(3)驼峰命名
本篇作为上一篇的补充,介绍上一篇可能出现的问题1.mybatis详解-(2)问题分析如果跟随上一篇的步骤测试,有的结果可能是正常的,但有的结果可能出现lastName=null的情况。lastName=null的情况,请注意sql中我为数据库表中的last_name字段起了个别名lastName,可以跟Employee对象对应,查询的结果就可以注入对象中。<mapper namespace="org原创 2017-10-26 09:05:48 · 973 阅读 · 0 评论 -
mybatis详解-(5)面向接口
前面helloworld中通过selectOne完成了一次查询,但是那种方法需要将所有的参数都写在代码中,包括配置文件的命名空间。这里提供一种通过接口式编程,将所有的方法都定义为接口。在代码中调用接口,实际传递的参数都放置在配置文件中。1.创建实例对象Employee package org.mybatis.settings;public class Employee { private In原创 2017-12-12 14:33:09 · 292 阅读 · 0 评论 -
mybatis详解-(6)配置文件
前面几节中介绍了mybatis的helloworld操作。在配置文件中也添加了一些配置,比如<properties>,<settings>,但是到底有哪些配置呢,并不清楚。本节介绍一下两个配置文件的一些标签1主配置文件XML 映射配置文件 MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置(settings)和属性(properties)信息。文档的顶层结构如下:configu原创 2017-12-12 16:46:51 · 309 阅读 · 0 评论 -
mybatis详解-(17)动态SQL
MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦。拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。通常使用动态 SQL 不可能是独立的一部分,MyBatis 当然使用一种强大的动态 SQL 语言来改进这种情形,这种语言可以被用在任意原创 2017-12-19 09:22:33 · 254 阅读 · 0 评论