概要 今天我们接着来学习MyBatis的一些常用特性,包括别名,类型处理器,动态SQL 如何使用MyBatis 在本小节,我将通过一个例子介绍MyBatis 中一些常用特性的运用,包括类型处理器,动态SQL 别名 MyBatis 中有个比较好用的特性就是别名,这是为了减少在配置文件中配置实体类的全限定名的冗余。运用如下: 首先在MyBatis的配置文件中配置别名: <! MyBatis 内置了很多类型处理器(typeHandlers),详细可以参考MyBatis官方文档,对枚举类的处理的是通过EnumTypeHandler和EnumOrdinalTypeHandler两个处理器来处理了 在这里插入图片描述 动态SQL的使用 MyBatis的强大特性之一便是它的动态SQL,主要是处理 根据不同条件拼接SQL语句,例如拼接时添加必要的空格,去掉列表中的最后一列的逗号,MyBatis的动态SQL 在这里插入图片描述 参考文献 MyBatis 3官方文档 mybatis枚举自动转换(通用转换处理器实现) 源代码 https://github.com/XWxiaowei/MyBatisLearn/tree
MyBatis有必要使用缓存吗?为什么? 一般的ORM框架都会提供缓存功能来提升查询效率、减少数据库的压力。 跟Hibernate一样,Mybatis也有一级缓存、二级缓存,并预留了集成第三方的缓存接口。 在Mybatis中,与缓存相关的类都在cache包中,其中有一个Cache接口,只有一个默认的实现类PerpetualCache,它是用HashMap实现的。 MyBatis一缓存默认是开启的,不需要任何配置(localCacheScope=STATEMENT相当于关闭一级缓存)。 实际上MyBatis用了一个装饰器的类来维护,就是CachingExecutor。如果启用了二级缓存,MyBatis在创建Executor的时候会对Executor进行装饰。
Mybatis 3.5 发布有段时间了,终于支持了 Optional ,这么实用的特性,竟然还没人安利……于是本文出现了。 文章比较简单,但非常实用,因为能大量简化恶心的判空代码。 时代码是这样写的: 1 2 3 4 5 @Mapper public interface UserMapper { @Select("select * from user where id = 你的代码可以这么写了: 1 2 3 4 5 @Mapper public interface UserMapper { @Select("select * from user where id 至于 Optional 怎么使用,本文不作赘述——JDK 12都发布了,你要我普及JDK 8的”新特性”吗?大家自行百度吧,百度很多了。关键词:Java 8 Optional 。 思考 Mybatis 已支持 Optional ,Mybatis Spring Boot Starter 也已跟进,引入如下依赖即可: 1 2 3 4 5 <dependency> <groupId
@toc一、MyBatis简介1.1 MyBatis历史MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了 1.2 MyBatis特性MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集MyBatis可以使用简单的 ,则去镜像网站中下载没有,则去中央仓库中下载本人其他相关文章链接1.一、MyBatis简介:MyBatis历史、MyBatis特性、和其它持久化层技术对比、Mybatis下载依赖包流程2.二、搭建MyBatis 采用xml方式,验证CRUD(增删改查操作)3.三、MyBatis核心配置文件详解4.四、MyBatis获取参数值的两种方式(重点)5.五、MyBatis的增删改查模板(参数形式包括:String、对象 )9.九、MyBatis动态SQL10.十、MyBatis的缓存11.十一、MyBatis的逆向工程12.十二、MyBatis分页插件
MyBatis的高级特性 1 学习目标 1,理解Mybatis多对多关系 2,掌握Mybatis的延迟加载 3,掌握Mybatis缓存 4,掌握逆向工程生成mapper和实体类 2 Mybatis DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis 2.3.7 解决方案 2.3.7.1 解决1: 查看mybatis官网 http://www.mybatis.org/mybatis-3/zh/configuration.html 打开页面,找到settings B. mybatis无法实现细粒度的缓存管理,当你查询大量数据的时候而且将数据存储到mybatis二级缓存中的时候,但是一旦队一个数据操作增加,删除,修改,这里二级缓存就全部清空,而mybatis无法实现对这里单个信息的修改
'@Nested' import org.junit.gen5.api.BeforeEach; import org.junit.gen5.api.Nested; import org.junit.gen5 好,上面是基础新特性。接下来是条件篇 条件篇-Conditions 在Junit 5中增加了条件这个概念。增加了两个扩展点。 在这里withMethodSource方法执行了两次:一次是Hello和5传入后执行,一次是JUnit 5和7传入后执行。 "Hello, 5", "JUnit 5, 7", "'Hello, JUnit 5!' 大总结 本文有点长,但却包含了JUnit5主要的新特性。
前言 今天开始学习我自己总结的 Java-学习路线 中的《Spring5-新特性》,小简从 0 开始学 Java 知识,并不定期更新所学笔记,期待一年后的蜕变吧! Spring5 简介 Spring5 框架的代码基于Java8,运行时兼容 JDK9,许多不建议使用的类和方法在代码库中删除 Spring5 框架自带了通用的日志封装 Log4j2 Spring5 已经移除Log4jConfigListener,官方建议使用 Log4j2 Spring5 框架整合Log4j2 Spring5 框架核心容器支持 @Nullable 注解 Spring5 框架支持整合 JUnit5 Spring5 核心容器支持函数式风格 GenericApplicationContext Spring5 框架新功能 Webflux 通用的日志封装 1、 @Test public void testJunit5() { userService.add(); } } Webflux 学完 SpringMVC 再学
HTML5新特性 (1). 新的语义标签 (2). 增强型表单(表单2.0) (3). 音频和视频 (4). Canvas绘图 (5). SVG绘图 (6). 地理定位 (7). HTML5中表单的新特性 (1). 新的input type <input type="?" H5表单新特性 - 表单元素的新属性 H4中表单元素的属性:<input ? HTML5新特性-SVG绘图(Scalable Vector Graph:可缩放的矢量图) ? HTML5新特性之七-拖放API (1).
代码直接放在Github仓库【https://github.com/Damaer/Mybatis-Learning/tree/master/mybatis-05-CURD 】 需要声明的是:此Mybatis org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=[service] %d - %c -%-4r [%t] %-5p org.apache.log4j.PatternLayout #log4j.appender.R.layout.ConversionPattern=[service] %d - %c -%-4r [%t] %-5p DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis 5.通过SqlSession的insert(),update(),delete()等方法,里面传入id和参数,就可以查找到刚刚扫描mapper.xml文件时存起来的sql,去执行sql。
概述 HTML5 的新增特性主要是针对于以前的不足,增加了一些新的标签、新的表单和新的表单属性等。 这些新特性都有兼容性问题,基本是 IE9+ 以上版本的浏览器才支持,如果不考虑兼容性问题,可以大量使用这些新特性。 语义化标签 (★★) 以前布局,我们基本用 div 来做。 CSS3 的现状 新增的CSS3特性有兼容性问题,ie9+才支持 移动端支持优于 PC 端 不断改进中 应用相对广泛 现阶段主要学习:新增选择器和盒子模型以及其他特性 CSS3 新增选择器 了解 狭隘H5 广义H5.png 广义H5 广义的 HTML5 是 HTML5 本身 + CSS3 + JavaScript 。 这个集合有时称为 HTML5 和朋友,通常缩写为 HTML5 。 虽然 HTML5 的一些特性仍然不被某些浏览器支持,但是它是一种发展趋势。
诚然,反应式编程不仅是此版本的主题,还是令许多开发人员激动不已的重大特性。人们对能够针对负载波动进行无缝扩展的灾备和响应式服务的需求在不断增加,Spring5 很好地满足了这一需求。 为了充分利用 Java 8 特性,它的代码库已进行了改进,而且该框架要求将 Java8 作为最低的 JDK 版本。 ---- 反应式编程模型 Spring 5 最令人兴奋的新特性是它的反应式编程模型。Spring 5 Framework 基于一种反应式基础而构建,而且是完全异步和非阻塞的。 Spring 5 的测试套件通过多种方式得到了增强,但最明显的是它对JUnit 5 的支持。现在可以在您的单元测试中利用Java 8 中提供的函数式编程特性。清单 7 演示了这一支持: 清单 7. ---- 结束语 Spring 5 的首要特性是新的反应式编程模型,这代表着对提供可无缝扩展、基于 Spring 的响应式服务的重大保障。
安装与启动 Webpack 5 发布已经有一段时间了,很多小伙伴都在考虑要不要升级,有没有升级的必要,不知道升级后有哪些改变; 今天我们就来做个对比看看,webpack5 带来了那些全新的改变; 没有对比就没有伤害 ,为了更好地伤害 webpack 4 , 我们使用 webpack4 和 webpack 5 分别构建一个 React 项目来做对比: mkdir webpack4 mkdir webpack5 # import React from "react" const App = ()=>{ return (
文本简单介绍 Qt5 的特性,其具体内容来自 Qt5 官方 Wiki 的介绍 。 前面说过,Qt5 最大的特性在于模块化。这么多的模块,Qt5 统称为 Qt Essentials。 目前我们使用 C++ 模板实现了这一功能,不过当 C++11 获得全面支持之后,使用 C++11 新特性更为方便。 这个类比 QRegExp 更强大,速度更快,支持更多特性,例如 lazy 和 possessive 谓词、lookbehinds、具名捕获组 named capturing groups 和循环匹配。 GL 渲染,包括基本的光照 3D 场景管理 加载 3D 资源,例如 .obj 和 .3ds 文件 stock 形状 几何形状的加载和管理 纹理和材质 简单的几何动画 camera 和 view 上面这些特性都由 内置缩放手势、剪切和加速度感应 大幅提升性能,特别是大地图的多边形和一般对象 支持旋转和地址匹配的完整 QML API——兼容标准的 QML model-view 设计 不需要打开所有插件,即可检查所有支持的特性
1.动态SQL,解决关联sql字符串的问题,mybatis的动态sql基于OGNL表达式 if语句,在DeptMapper.xml增加如下语句; <select id="selectByLikeName " resultType="org.<em>mybatis</em>.example.dao.Dept" parameterType="org.<em>mybatis</em>.example.dao.Dept"> select <select id="selectByLikeName" resultType="org.<em>mybatis</em>.example.dao.Dept" parameterType="org.<em>mybatis</em>.example.dao.Dept List<Dept>deptList=mapper.selectByLikeName(d); System.out.println(deptList.get(0).getDname()); } <em>5</em>. session.getMapper(DeptMapper.class); List<Integer>idList=new ArrayList<Integer>(); idList.add(<em>5</em>)
简介: es5 1.严格模式 在程序点公布写"use strict" ①禁止给为声明的变量赋值 ------> 避免了内存泄漏和全局污染 ②静默失败升级为错误 ------->静默失败,也会报错!
移除元素中一个或多个类名 5.toggle(class,true| false) 在元素中切换类名 第一个参数为要在元素中移除的类名,并返回 false。 要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句 5.parse() 方法用于将JSON 字符串转换为对象。 7.自定义对象属性: html5中可以通过data- 前缀就成为data 属性, 也可以应用CSS属性选择器进行样式设置。 onclick = function() { alert("饮料是:" + typeOfDrink); }; 得到的饮料的 coffee 8.html5 key和value(必须是字符串) getData() : 获取数据,根据key值,获取对应的value demo 下载https://github.com/ningmengxs/html5.
id="sidebar">
HTML5新特性 HTML5是下一代HTML标准,是HTML最新的修订版本,2014年10月由万维网联盟W3C完成标准制定,HTML5将HTML从用于构造一个文档的一个简单标记,到一个完整的应用程序开发平台 ,HTML5还包括新元素和用于增强存储、多媒体和硬件访问的JavaScript APIs。 msup> <mo>=</mo> <msup><mi>c</mi><mn>2</mn></msup> </mrow> </math> 拖放API 拖放是一种常见的特性 ,即捉取对象以后拖到另一个位置,在HTML5中,拖放是标准的一部分,任何元素都能够拖放。 */ Web Storage 使用HTML5可以在本地存储用户的浏览数据,localStorage和sessionStorage是HTML5提供的对于Web存储的解决方案。
1.新的文档类型 2.脚本和链接无需type 3.语义Header和Footer 4.Hgroup 5.标记元素 6.图形元素 7.重新定义 8.占位符 9.必要属性 10.Autofocus
2.HTML5新特性:(区分HTML) 绘画canvas; 用于媒介回放的video和audio元素; 本地离线缓存localStorage长期缓存数据,浏览器关闭后数据不丢失;sessionStorage DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>hello HTML5</ --[if lt IE 9]> 2 <script type="text/javascript" src="http://cdn.bootcss.com/html<em>5</em>shiv/r29/html<em>5</em>. -- <em>5</em>.canvas渐变 --> 64 65 <! ; 93 img.onload=function(){ 94 ctx<em>5</em>.drawImage(img,<em>5</em>,<em>5</em>); 95 } 96 </script