MyBatis

从源码看世界:Mybatis初始化过程(下)

情到浓时终转凉″ 提交于 2020-02-27 09:32:02
看完sql生成过程,我们再来看看mapper接口的实例化。众所周知,接口是无法实例化的,那Mybatis到底实例出来的是什么东西呢? mapper的实例化通过SqlSession获取的,因此我们先来看看SqlSession的创建过程: private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean autoCommit) { Transaction tx = null; try { final Environment environment = configuration.getEnvironment(); final TransactionFactory transactionFactory = getTransactionFactoryFromEnvironment(environment); tx = transactionFactory.newTransaction(environment.getDataSource(), level, autoCommit); final Executor executor = configuration.newExecutor(tx, execType); return new

Maven+SSM框架(Spring+SpringMVC+MyBatis)(二)

放肆的年华 提交于 2020-02-27 08:59:29
1.基本概念 2.开发环境搭建 3.Maven Web项目创建 4.SSM整合 此次整合我分两个配置文件:   1)分别是spring-mybatis.xml,包含spring和mybatis的配置文件,   2)还有个是spring-mvc的配置文件,   3)此外有2个资源文件:jdbc.propertis和log4j.properties 以下是框架版本及来源 :   Spring 4.0.2 RELEASE(PS:无需手动下载,Maven会自动下)   Spring MVC 4.0.2 RELEASE(PS:无需手动下载,Maven会自动下)   MyBatis 3.2.6 *打开 xml 文件的代码提示功能 打 开 Eclipse 依次选择 Window > Preferences > Xml > Xml Files > Editor > Content Assist > Auto activation > Prompt when these characters are inserted,设置框中默认是 <=: ,改成<=:qwertyuioplkjhgfdsazxcvbnm就ok了。 下面是项目完整结构,先有个印象 : 4.1 Maven引入需要的jar包 为了方便后面说的时候不需要引入JAR包,我这里直接给出所有需要的JAR包,这都是基本的JAR包

1-初识Mybatis

帅比萌擦擦* 提交于 2020-02-27 07:04:41
1、概述: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis ;2013年11月迁移到Github MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码 Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回 2、JDBC链接数据库的问题: 1) 数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库连接池可解决此问题 解决:在SqlMapConfig.xml中配置数据连接池,使用连接池管理数据库链接 2)Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码 解决:将Sql语句配置在XXXXmapper

SpringBoot+Mybatis+Thymeleaf-Build Blog site_1

試著忘記壹切 提交于 2020-02-27 07:00:32
1、 快速构建Springboot项目 (1)、 Spring Boot 项目目录结构介绍 (2)、 Spring Boot 项目启动的几种方式 2、 (1)、hello blog (2)、 DispatchServlet 配置 (3)、 静态 web 资源如何处理 (4)、 消息转换器 HttpMessageConverter 3、 总结 环境: JDK:1.8 Spring boot:2.1.0-RELEASE Maven:3+ 注意事项: 过程中应当必须注意spring和Java版本之间的对应兼容问题这个非常的坑。 如果Maven默认的国外资源较远很慢可换为阿里云资源池。 **1.1-**构建Springboot的方式: (1)、使用Spring Initialize构建: Spring官方提供了Spring Initialize来进行Springboot的快速构建,他是一个在线生成Springboot基础项目的工具,哎呀就当理解为Springboot的“创建向导”。 ♬ 首先进入官网 https://start.spring.io ♬ 然后呢在页面上输入我们需要的我基础信息依次填写即可 ♬ 最后点击 Generate Project构建项目就即可获取一个Springboot基础项目代码压缩包-如下图; 如上图,Springboot 版本选择最新版或其它稳定点儿的老版本

用mybatis插件抓取最终sql

 ̄綄美尐妖づ 提交于 2020-02-27 06:55:05
痛点概述 当我们在排查bug ,需要看执行的完整sql 时,在 console可以拿到如图的sql 然后手工一个一个的替换问号占位符后,去MySQL 执行,看sql有木有什么问题。如果sql简单,那比较好说, 如果是个复杂sql,手动替换N个问号占位符,这种痛相信大家都经历过。 今天介绍的 MybatisFinalSqlPlugin 插件 正是解决了这样的痛点,可以直接抓到最终sql。 环境 mybatis 3.4.2 实现思路 最近在走读mybatis 核心源码时,发现mybatis自己有构建最终sql,就想着把代码抠出来用,后面找到一个切入点,就是通过mybatis 插件机制,在插件里面获取 mybatis 的几大核心对象,然后获取到 mybatis 自己构建的最终sql,大功告成,详细代码如下。 MybatisFinalSqlPlugin 插件 完整代码 package com.anuo.app.common.datalayer.mybatisplugin; import com.google.common.base.Stopwatch; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.executor.statement.StatementHandler; import org.apache.ibatis

Mybatis在插入自增字段时,会对当前对象未赋值的自增字段进行赋值

不羁的心 提交于 2020-02-27 05:46:01
Mybatis在插入自增字段时,会对当前对象未赋值的自增字段进行赋值,如下即自动完成对id的赋值 OrderItem orderItem = new OrderItem(); System.out.println("=========="); System.out.println(orderItem);//此时输出OrderItem{id=null, pid=null, oid=null, uid=null, number=null, product=null} orderItem.setPid(pid); orderItem.setUid(user.getId()); orderItem.setNumber(num); System.out.println("=========="); System.out.println(orderItem);//此时输出OrderItem{id=null, pid=91, oid=null, uid=1, number=1, product=null} orderItemService.add(orderItem); System.out.println("=========="); System.out.println(orderItem);//此时输出OrderItem{id=6, pid=91, oid=null, uid=1,

mybatis之foreach用法

。_饼干妹妹 提交于 2020-02-27 05:12:56
在做mybatis的mapper.xml文件的时候,我们时常用到这样的情况:动态生成sql语句的查询条件,这个时候我们就可以用mybatis的foreach了 foreach元素的属性主要有item,index,collection,open,separator,close。 item: 集合中元素迭代时的别名,该参数为必选。 index :在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选 open :foreach代码的开始符号,一般是(和close=")"合用。常用在in(),values()时。该参数可选 separator :元素之间的分隔符,例如在in()的时候,separator=","会自动在元素中间用“,“隔开,避免手动输入逗号导致sql错误,如in(1,2,)这样。该参数可选。 close: foreach代码的关闭符号,一般是)和open="("合用。常用在in(),values()时。该参数可选。 collection: 要做foreach的对象,作为入参时,List对象默认用"list"代替作为键,数组对象有"array"代替作为键,Map对象没有默认的键。当然在作为入参时可以使用@Param("keyName")来设置键,设置keyName后,list,array将会失效。 除了入参这种情况外

国内最全的Spring Boot系列之三

久未见 提交于 2020-02-27 04:47:09
历史文章 《 国内最全的Spring Boot系列之一 》 《 国内最全的Spring Boot系列之二 》 马上要过年了,作者要回家好好休息一下了,吃饱喝足,明年继续。在此和大家拜个早年,祝大家:鼠年大吉、心想事成、万事如意、开心每一天。 「您可以在评论区留下你的脚步、留下你的祝福;因为你的祝福,所以我快乐!」 一、回首2019 转眼间2020到来了,回首2019,「Spring Boot」也经历了3年的风雨洗礼,在此感谢粉丝们给予的支持,让我能够一直坚持到现在。 2019不是结束,是2020新的起点,新的一年新的开始,在此也祝福大家新的一年能够有新的突破、新的成长、开心多多、喜事连连。 二、悟纤和师傅杂谈 Java序列化,色色谈 会是一种心动的感觉不? 《色谈Java序列化:女孩子慎入》带你找到初恋般的感觉。 https://mp.weixin.qq.com/s/8tcHFjY1VawAkzdArkSzJQ Memcached的时间复杂度是O(1),那么时间复杂度又是怎么计算来的呐? 《烦不烦,别再问我时间复杂度了:这次不色,女孩子进来吧》 https://mp.weixin.qq.com/s/F1HLfWkYok4D633OpcLjwA 你爱Memcached吗,爱它就要懂它,才能爱到骨子里去。 《爱我,就要懂我 – Memcached》 https://mp.weixin