MyBatis

简单的Mybatis程序

旧街凉风 提交于 2020-03-28 00:18:37
1 .新建一个普通Maven项目,导入 mybatis、mysql、junit(用于测试)3个依赖 Mybatis <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis-version}</version> </dependency> Mysql <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-version}</version> </dependency> Junit <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit-version}</version> </dependency> 2.编写一个mybatis工具类MybatisUtils,方便后续使用 package com.zy.utils; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import

Java面试之MyBatis

六月ゝ 毕业季﹏ 提交于 2020-03-27 16:09:52
125. MyBatis 中 #{}和 ${}的区别是什么? \#{}是预编译处理,${}是字符替换。 在使用 #{}时,MyBatis 会将 SQL 中的 #{}替换成“?”,配合 PreparedStatement 的 set 方法赋值,这样可以有效的防止 SQL 注入,保证程序的运行安全。 126. MyBatis 有几种分页方式? 分页方式:逻辑分页和物理分页。 逻辑分页: 使用 MyBatis 自带的 RowBounds 进行分页,它是一次性查询很多数据,然后在数据中再进行检索。 物理分页: 自己手写 SQL 分页或使用分页插件 PageHelper,去数据库查询指定条数的分页数据的形式。 127. RowBounds 是一次性查询全部结果吗?为什么? RowBounds 表面是在“所有”数据中检索数据,其实并非是一次性查询出所有数据,因为 MyBatis 是对 jdbc 的封装,在 jdbc 驱动中有一个 Fetch Size 的配置,它规定了每次最多从数据库查询多少条数据,假如你要查询更多数据,它会在你执行 next()的时候,去查询更多的数据。就好比你去自动取款机取 10000 元,但取款机每次最多能取 2500 元,所以你要取 4 次才能把钱取完。只是对于 jdbc 来说,当你调用 next()的时候会自动帮你完成查询工作。这样做的好处可以有效的防止内存溢出。

SpringBoot 整合 MybatisPlus 3.0

跟風遠走 提交于 2020-03-27 06:36:55
CRUD是指在做计算处理时的增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。主要被用在描述软件系统中DataBase或者持久层的基本操作功能 需求: 存在一张 message 表,且已有对应的实体类 Message,实现message 表的 CRUD 操作我们需要做什么呢? 基于 Mybatis: 需要编写 MessageMapper 接口,并在 MessageMapper.xml 映射文件中手动编写 CRUD 方法对应的sql语句。 基于 MP: 只需要创建 MessageMapper 接口, 并继承 BaseMapper 接口。 我们已经有了Message、message了,并且MessageDao也继承了BaseMapper了,接下来就使用crud方法。 前言: mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的解决了这个问题。 一、mybatis-plus简介: Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这是官方给的定义

MyBatis映射器(转载)

心已入冬 提交于 2020-03-27 02:29:19
<div class="post-content" itemprop="articleBody"> <h2>什么是MyBatis映射器?</h2><p>MyBatis框架包括两种类型的XML文件,一类是配置文件,即mybatis-config.xml,另外一类是映射文件,例如XXXMapper.xml等。在<a href="http://www.mybatis.cn/680.html" target="_blank">MyBatis的配置文件mybatis-config.xml</a>包含了<mappers></mappers>节点,这里就是MyBatis映射器。</p><h2>1、MyBatis映射器发展历史简介</h2><p>映射器是MyBatis中最核心的组件之一,在MyBatis 3之前,只支持XML映射器,所有的SQL语句都必须在XML文件中配置。而从MyBatis 3开始,开始支持接口映射器,其底层利用的是接口绑定技术(注:面试中经常会问到的一个知识点,见下文5.1项介绍)。另外,接口映射器允许通过注解定义SQL语句,用以替代XML文件配置SQL。</p><h2>2、MyBatis映射器分类</h2><h3>MyBatis映射器分为三类,如下所示:</h3><p>(1)纯xml映射器,利用SqlSession的各种方法实现增删改查。例如:</p><pre><code

SqlsessionTemplate线程安全解密

一世执手 提交于 2020-03-26 17:34:15
3 月,跳不动了?>>> SqlsessionTemplate线程安全解密 springboot中使用的是SqlsessionTemplate,而不是DefaultSqlsession,这个类是单例的,如何保证线程安全呢? 类图 源码解析 org.mybatis.spring.SqlSessionTemplate#selectList(java.lang.String),委托给代理 @Override public <E> List<E> selectList(String statement) { return this.sqlSessionProxy.<E> selectList(statement); } org.mybatis.spring.SqlSessionTemplate.SqlSessionInterceptor#invoke,代理类核心方法 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // 获取Sqlsession SqlSession sqlSession = getSqlSession( SqlSessionTemplate.this.sqlSessionFactory, SqlSessionTemplate.this

其乐后台管理系统(五)--订单管理模块

安稳与你 提交于 2020-03-26 17:31:48
3 月,跳不动了?>>> 前言:hello!!!在前几天给大家介绍到了----- 门店管理模块 ,今天的订单模块和管理模块其实相差无几,实现方式可以说几乎相同!!不过还是得给大家好好的讲解一下订单模块,因为这次订单模块的前端部分将会为大家讲到两个特别的标签,也让大家对项目有更深的了解。 其乐蛋糕店后台管理系统 地址 Github--其乐后台管理系统源码 https://github.com/XINGGou/qile 其乐后台管理系统(一)--项目介绍 https://my.oschina.net/u/4115134/blog/3193902 其乐后台管理系统(二)--整合三大框架(spring+springmvc+mybatis) https://my.oschina.net/u/4115134/blog/3195801 其乐后台管理系统(三)--整合mybatis框架(三大框架搭建成功) https://my.oschina.net/u/4115134/blog/3196768 其乐后台管理系统(四)--门店管理模块 https://my.oschina.net/u/4115134/blog/3207632 其乐后台管理系统(五)--订单管理系统 https://my.oschina.net/u/4115134/blog/3211989 后端部分 1.创建com.it.pojo

MapperFactoryBean产生代理原理

最后都变了- 提交于 2020-03-26 11:16:32
3 月,跳不动了?>>> MapperFactoryBean产生代理原理 类图 流程 这个类实现了FactoryBean,spring会通过 org.mybatis.spring.mapper.MapperFactoryBean#getObject 来产生bean对象。 @Override public T getObject() throws Exception { return getSqlSession().getMapper(this.mapperInterface); } 委托sqlSession来产生mapper。org.apache.ibatis.binding.MapperRegistry#getMapper。 public <T> T getMapper(Class<T> type, SqlSession sqlSession) { final MapperProxyFactory<T> mapperProxyFactory = (MapperProxyFactory<T>) knownMappers.get(type); if (mapperProxyFactory == null) { throw new BindingException("Type " + type + " is not known to the MapperRegistry."); }

Spring Cloud 持续更新中

送分小仙女□ 提交于 2020-03-25 23:32:56
内容 微服务概述 SpringCloud概述 Rest微服务构建案例工程模块 Eureka服务注册与发现 Ribbon负载均衡 Feign负载均衡 Hystrix断路器 zuul路由网关 Config分布式配置中心 Sleuth服务跟踪 Stream消息驱动 Bus消息代理的集群消息总线 常见问题 什么是微服务 微服务之间是如何独立通讯的 Spring Cloud和Dubbo有哪些区别 对SpringBoot和SpringCloud的理解 什么是服务熔断?什么是服务降级? 微服务的优缺点?项目开发中碰到的坑 你所知道的微服务技术栈有哪些 eureka和zookeeper都可以提供服务注册与发现的功能,两者的区别是什么? 一、微服务概述 https://www.martinfowler.com/articles/microservices.html 微服务与微服务架构 通常而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务在其独立的自己的进程中,服务之间互相协同、互相配合,为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API,dubbo是基于RPC的)。每个服务围绕着具体业务进行构建,并且能够被独立部署到生成环境、类生成环境等。另外,应尽量避免统一的、集中式的服务管理机制

IDEA撸码插件利器

南笙酒味 提交于 2020-03-25 20:13:54
3 月,跳不动了?>>> 这里只是推荐一下好用的插件,具体的使用方法不一一详细介绍。 1、JRebel for IntelliJ 一款热部署插件,只要不是修改了项目的配置文件,用它都可以实现热部署。收费的,破解比较麻烦。不过功能确实很强大。算是开发必备神器了。热部署快捷键是control+F9/command+F9。 2、.ignore git提交时过滤掉不需要提交的文件,很方便,有些本地文件是不需要提交到Git上的。 3、CamelCase 将不是驼峰格式的名称,快速转成驼峰格式,安装好后,选中要修改的名称,按快捷键shift+alt+u。 4、Lombok plugin 开发神器,可以简化你的实体类,让你i不再写get/set方法,还能快速的实现builder模式,以及链式调用方法,总之就是为了简化实体类而生的插件。 5、Mybatis plugin 可以在mapper接口中和mapper的xml文件中来回跳转,就想接口跳到实现类那样简单。 6、codehelper.generator 可以让你在创建一个对象并赋值的时候,快速的生成代码,不需要一个一个属性的向里面set,根据new关键字,自动生成掉用set方法的代码,还可以一键填入默认值。 GenAllSetter 特性 在Java方法中, 根据 new 关键词, 为Java Bean 生成所有Setter方法。

MyBatis获取自增ID

拜拜、爱过 提交于 2020-03-25 17:36:24
使用MyBatis进行insert操作时获取自增ID可以使用以下方法,在*.xml文件夹中添加以下配置信息即可: keyProperty="对应主键的对象" useGeneratedKeys="true" useGeneratedKeys这个只有insert语句生效,useGeneratedKeys默认为false,当useGeneratedKeys为true时,如果插入的表id以自增列为主键时,将会返回自增的id,数据插入之后可以直接通过传入的对象获取自增的id 来源: 51CTO 作者: pannijingling 链接: https://blog.51cto.com/1197822/2481721