MyBatis
java&ly
在路上
展开
-
MyBatis(三) 事务管理和缓存机制
一、事务管理1.1 Transaction接口1、构成:(1)MyBatis的事务设计重点是Transaction接口,Transaction接口有两个实现类,分别是 JdbcTransaction和ManagedTransaction。(2)同时MyBatis还设计了TransactionFactory接口和两个实现类JdbcTransanctionFactory和Managed原创 2017-07-11 11:31:46 · 3216 阅读 · 0 评论 -
MyBatis的核心组件和生命周期
1 核心组件:1、SqlSessionFactoryBuilder(构造器):它会根据配置或者代码来生成SqlSessionFactory,采用的是分布构建的Builder模式。2、SqlSessionFactory(工厂接口):依靠它来生成SqlSession,使用的是工厂模式。3、SqlSession(会话):一个既可以发送SQL执行返回结果,也可以获取Mapper的接口。4、原创 2017-09-25 10:21:37 · 860 阅读 · 0 评论 -
MyBatis 运行原理
构建SqlSessionFactory过程 SqlSessionFactory是MyBatis的核心类之一,其最重要的功能就是提供创建MyBatis的核心接口SqlSession,所以 要先创建SqlSessionFactory,为此要提供配置文件和相关的参数。 MyBatis采用Builder模式去创建SqlSessionFactory,在实际中通过SqlSessionFactoryBuil原创 2017-09-30 16:08:54 · 596 阅读 · 0 评论 -
MyBatis 动态SQL
if元素: <if test="name != null and name != ''" > ... </if>choose、when、otherwise元素:<select id="findAnalystByIds" resultType="com.bob.analyst.model.Analyst" parameterType="com.bob.analyst原创 2017-09-30 09:58:06 · 222 阅读 · 0 评论 -
MyBatis 缓存、延迟加载
一、延迟加载lazyLoadingEnabled:延迟加载全局开关。当开启时,所有关联对象都会延迟加载。在特定关系中,可通过设置fetchType属性来覆盖该项的开关状态。默认值:true。aggressiveLazyLoading:当开启时,对任意属性的调用会使带有延迟加载属性的对象完整加载;反之,则每种属性按需加载。默认:false 备注:上面两个属性都在配置文件中配置说明:选项lazy原创 2017-09-30 09:55:15 · 474 阅读 · 0 评论 -
MyBatis 多对多级联
在MyBatis中会拆分为两个一对多关系。 比如: 用户、角色 就是多对多关系,在做的时候就会拆分两个一对多,及一个用户多多个角色,一个角色对多个用户。 中间还需要一个关联表 entity: public class User2 { private Long id; private String userName; private String realName;原创 2017-09-30 09:49:29 · 1301 阅读 · 0 评论 -
MyBatis 级联查询
级联是在resultMap标签中配置。级联不是必须的,级联的好处是获取关联数据十分便捷,但是级联过多会增加系统的复杂度,同事降低系统的性能,次增彼减,所以记录超过3层时,就不要考虑使用级联了,因为这样会造成多个对象的关联,导致系统的耦合、负责和难以维护。 MyBatis中的级联分3种: 1.鉴别器(discriminator)它是一个根据某些条件决定采用具体实现类级联的方案,比如体检根据性别来区原创 2017-09-30 09:38:12 · 2306 阅读 · 0 评论 -
MyBatis insert、update、delete、sql 标签
配置属性如下: 属性 描述 id SQL编号,用于标识这条SQL parameterType 参数类型和select相同 flushCache 是否刷新缓存,插入时会刷新一级缓存和二级缓存,否则不刷新,默认为true timeout 超时时间,单位为秒 statementType STATEMENT、PREPARED(预编译)、CALLABLE(存储过程原创 2017-09-29 15:54:21 · 554 阅读 · 0 评论 -
MyBatis select标签
常用元素有:id、parameterType、resultType、resultMap,设置缓存用到flushCache、useCacheid:配合Mapper的全限定名,联合成为一个唯一的标识,用户标识这条SQL。 parameterType:表示这条SQL接受的参数类型,可以是MyBatis系统定义或者自定义的别名,比如int、string、float等,也可以是全限定名,比如com.xx.x原创 2017-09-29 15:43:00 · 19187 阅读 · 1 评论 -
MyBatis 映射器
映射器是MyBatis最复杂最重要的组件。它是由一个接口加上XML文件(或注解)组成。 在映射器中可以配置参数、各类的SQL语句、存储过程、缓存、级联等复杂的内容,并且通过简易的映射规则映射到POJO或者其他对象 上,映射器也能有效消除JDBC底层的代码。 MyBatis的映射器也可以使用注解来完成,但是这里不提倡使用,原因有三: (1)面对复杂性,SQL会显得无力,尤其是长的SQL。 (原创 2017-09-29 15:21:42 · 469 阅读 · 0 评论 -
MyBatis 配置1
MyBatis配置文件<?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><!--原创 2017-09-25 16:24:01 · 300 阅读 · 0 评论 -
MyBatis 配置2
1-ObjectFactory(对象工厂)说明:当创建结果集时,MyBatis会使用要给对象工厂来完成创建这个结果集实例。在默认情况下,MyBatis会使用其定义的对象工厂:DefaultObjectFactory(org.apache.ibatis.reflection.factory.DefaultObjectFactory)来完成对应的工作。MyBatis允许注册自定义的ObjectFac原创 2017-09-25 21:04:34 · 217 阅读 · 0 评论 -
MyBatis(二) MyBatis的关联映射和动态SQL
一、关联映射1:一对一 1)在需要关联的实体对象中引用另外一个对象 2)在xml中的的引用进来: select属性表示会使用column属性的card_id值作为参数执行CardMapper中定义的selectCardById 查询对应的Card数据,查询出的数据被封装到引用的对象中。2:一对多 1)在需要关联的实体对象原创 2017-07-06 16:30:59 · 570 阅读 · 0 评论 -
MyBatis(一) 简介和基本原理
MyBatis的体系结构1、MyBatis的持久化解决方案是将用户从原始的JDBC访问中解放出来,用户只需要定义需要操作的SQL语句,无需关注底层的JDBC操作,就可以面向对象的方式进行持久层操作。2、底层数据库连接的获取、数据访问的实现、事物控制等无须用户关心,从而将应用层的JDBC/JTA API抽取出来。通过配置文件管理JDBC连接,让Mybatis解决持久化访问的实现。原创 2017-07-05 16:24:29 · 667 阅读 · 0 评论 -
spring-boot 引用子项目的service或则dao时,运行报错:NoSuchBeanDefinitionException
spring-boot 引用子项目的service或则dao时,运行报错:NoSuchBeanDefinitionException,如下:Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.jx.ekoochak.common....原创 2019-09-26 09:18:25 · 1003 阅读 · 0 评论