大家好,欢迎来到我的博客!今天要聊一聊关于MyBatis的XML配置,如何在查询数据表时判断List是否为空,并进行遍历拼接。...这时候,需要将用户输入的条件组装成一个List对象,然后将这个List对象作为参数传递给MyBatis的XML配置文件。但是,在某些情况下,用户可能会忘记输入条件,导致传入的List为空。...这时候,如果直接将一个空的List对象传递给MyBatis,就会导致查询结果为空或者出现异常。因此,需要在MyBatis的XML配置文件中判断List是否为空,并进行相应的处理。...二、如何判断List是否为空?在MyBatis的XML配置文件中,可以使用标签来判断List是否为空。...具体的做法如下:在MyBatis的XML配置文件中定义一个标签,用于编写SQL查询语句。然后,在标签内部,使用标签来判断List是否为空。
故事的背景是这样的:有个应用要跟ERP LN系统对接,使用了ION,需要在外部程序生成XML进行通讯,我用C# .NET写得,但是一开始一直报错。...本以为是ION的设置问题,后来查下来是XML文件中的空节点的标签自动换行,包含了不可见的\n换行字符。...没办法,改程序,将原来的Save写法改为xmlWriter,并设置相关的参数如下,问题解决! ...doc.Save(xmlWriter); } 参数相关介绍请访问:https://docs.microsoft.com/zh-cn/dotnet/api/system.xml.xmlwritersettings.indent
在Gradle5.0中,官方提供可以选择在项目中生成Groovy或者kotlin DSL构建脚本,并进一步的优化代码自动完成、重构和其他 IDE 辅助功能,为使用Kotlin DSL的 IDE 用户带来了极大的便利...在我们最近的海外支付SDK中,采用该种方式构建项目, 部分gradle代码如下: 可以看到使用kotlin编写和groovy编写区别不大,所以即使我们要将现有工程中的groovy脚本重写为kotlin...在写Android布局时,我们都习惯性的使用XML进行编写,但是可以考虑丢下冗长的XML写法,尝试使用Anko Layout来实现。...XML编写后,我们需要findViewById找到控件,再对控件进行操作、赋值;Anko Layout编写过程中,可以在布局中就直接做显示隐藏、赋值操作等,同时这种写法也有类型安全、空安全、代码复用性强的优势...Anko Layout由于是直接在kt文件中编写控件,那么它相对于xml来说,还有一个优势,即:减少了XML格式的解析过程,从而实现CPU资源和电量的节省。 XML的执行流程: ?
配置文件,避免了繁琐而且容易出错的 xml配置文件,极大的简化了基于 Spring 框架的企业级应用开发的配置。...Kotlin 是 Google 公司的 Android 官方支持的开发语言。Spring 官方也正式支持Kotlin语言,Spring Boot 2.0 版本中为 Kotlin 提供了一流的支持。...Gradle抛弃了Maven的基于 xml 的繁琐配置(众所周知XML的阅读体验比较差),Gradle 取而代之,采用了领域特定语言 Groovy DSL 的配置,大大简化了构建代码的行数。...相比于一门 Groovy 编程语言的配置跟 xml 语法的配置,孰优孰劣,显而易见。...系列课程视频地址: 【Spring Boot 2.0 极简教程】第1讲 Kotlin 的极简特性之:隐式类型与函数式编程 【Spring Boot 2.0 极简教程】第2讲 Kotlin类型系统与空安全
注意这里的文件指的是classpath下的文件 String config = getSelfInitializationConfig(); // 如果找到对应的日志配置文件并且logFile为null...,看具体的 1.4 初始化过程 根据AbstractLoggingSystem 使用logback日志库时,会查找classpath下是否存在这些文件: logback-test.groovy logback-test.xml...logback.groovy logback.xml logback-test-spring.groovy logback-test-spring.xml logback-spring.groovy..."logback-test.groovy", "logback-test.xml", "logback.groovy", "logback.xml" }; } @Override protected...或logback-test-spring.xml logback.groovy或logback-spring.groovy logback.xml或logback-spring.xml 在resources
size() //===> null Groovy的安全取值避免了空指针异常 //in Java: if(person != null && person.getAddress() !...Groovy为创建ArrayList提供了简洁的语法。..."] as Set 创建空的列表 def empty = [] println empty.size() //===> 0 添加元素 def languages = ["Java", "Groovy"...为创建映射提供了简洁的语法。...我们只需要在类定义中定义@Immutable,我们为这个类创建的任何对象都是一个不可变对象。 Groovy按照不可变对象的规则生成一个类文件。
介绍 本篇内容为Groovy学习分享第8篇,继续分享关于Groovy运算符的相关内容,上一篇介绍了位运算符的一些计算逻辑。...因为在Groovy中,对字符串取反比较。其实就是判断了字符串是否为空字符串,根据是否为空返回boolean值,然后再进行取反。...所以上面的示例中:zinyan字符串是非空的所以为true,然后取反输出为false。而下面第三行的代码中字符串为空的,所以值为false,取反得到的就是true了。...PS:在Groovy中判断字符串是否为空可以直接使用这个条件判断符来进行判断。如果对象是null 也是可以判断的。...//得到的结果 : 这个消息来自: ZINYAN.COM 网站 println(str.toUpperCase()) //得到的结果 : 这个消息来自: ZINYAN.COM 网站
本文参考自Groovy文档 The Grape dependency manager,本文代码大部分来自Groovy官方文档。...Groovy自带了一个嵌入式的jar依赖管理器,这个管理器的主要作用应该是配合Groovy脚本使用,让我们不需要任何额外配置就可以执行Groovy脚本。...快速开始 我们只要在Groovy文件的导入声明上添加@Grab注解即可,在注解上我们需要添加Maven依赖的相关信息。依赖项默认情况下会从Maven中央仓库下载。...@Grab('net.sourceforge.htmlunit:htmlunit:2.8') @GrabExclude('xml-apis:xml-apis') JDBC驱动需要使用系统类加载器加载,所以需要让...grape list 其他用法请参考Groovy文档。 更多例子 Groovy文档演示了几个例子,这里列出两个最典型的。 使用TagSoup库查找Java规范的PDF文件。
快速开始 Groovy语言提供了一个模块,可以让我们写用Groovy脚本的方式来编写Servlet,这叫做Groovlets。先看看一个简单的例子吧。下面这几个例子都来自官方文档。 if (!...${new Date()} """ session.counter = session.counter + 1 也可以使用Groovy的标记模板引擎...不太了解的可以看看我的文章Groovy模板引擎,或者直接看原文档。 if (!session) { session = request.getSession(true) } if (!...request response context application,以上几个和JSP中的一样,直接用就行了 session,该对象可能为空,只有当你向session放东西之后它才不为空,不然就要像官方的例子那样先判断是不是空...我用标记模板想迭代一个表格,结果显示无法在空对象上使用属性,查了半天没找到解决办法。所以只好写这么一个小例子,例子很简单,输入一个名称给服务器,然后返回问候。
- 将模板保存为可写的闭包,在流式场景中很有用 XmlTemplateEngine - 输出XML文件的模板引擎 MarkupTemplateEngine - 一个完整的、优化过的模板引擎,可以用于生成...下面的例子同样来自Groovy文档。...这个标记模板引擎主要用来生成类XML的模板,类似HTML等等。但是也可以用来生成所有类型的文档。前面那些模板都是基于字符串的。...xml version='1.0'?...xmlDeclaration()方法会生成一个标准的XML文档头。 comment方法生成HTML注释。 newLine生成一个新行。 包含 模板中还可以包含其他模板。
XmlNode 3、在 Groovy 脚本中生成 Xml 信息 一、创建 XmlNode 节点 ---- 在 class MyBuilderSupport extends BuilderSupport...类中维护一个 Map 集合 , 该 Map 集合用于存储 上一篇博客 【Groovy】自定义 Xml 生成器 BuilderSupport ( 构造 Xml 节点类 | 封装节点名称、节点值、节点属性...* Map 集合 * Key 为 节点的 name 名称 * Value 为 节点 XmlNode 对象 */ def xmlNodes = [:] createNode..., 即 Object parent 参数不为空 , 则将该节点放入父节点 XmlNode 的 children 子节点集合中 ; if (parent) { /...{ /** * Map 集合 * Key 为 节点的 name 名称 * Value 为 节点 XmlNode 对象 */ def xmlNodes
这意味着Spring Boot可以根据类路径下的jar包、定义的bean以及各种属性设置来自动配置你的应用。...示例:自动配置数据源 假设你在pom.xml中添加了Spring Boot的spring-boot-starter-data-jpa和数据库相关的依赖,Spring Boot会自动配置一个数据源和EntityManager...,你可以在应用的pom.xml中使用它们。...它允许你以Groovy脚本编写应用,而无需传统的Java构建配置。...示例:使用Spring Boot CLI运行Groovy应用 // app.groovy @RestController class MyController { @GetMapping("/"
Gradle构建的利与弊 个人喜欢Gradle;我讨厌XML,复杂的Java/Groovy项目,如果没有Gradle,几乎是寸步难行的。...除了没有复杂的XML以外,Gradle还使用Groovy或Kotlin编写的构建脚本提供了灵活性和更快的构建速度。...Gradle是: 大型项目更快 无限制可定制==更陡峭的学习曲线 使用Groovy或Kotlin代替XML 而Maven是: 普遍采用 对于较小项目更简单 带有XML和尖括号 Groovy的优点 简要介绍一下...但是,真正的有趣的来自build.gradle Groovy脚本。因为它可以执行任意代码并访问任何Java库,特定于构建的Gradle DSL和Gradle API。...来自强大的面向对象的背景,封闭最初感觉就像虫洞在严格的对象范围连续体上打穿透孔一样,奇怪地将对象的各个部分在空间和时间上连接在一起。
大多 数有效的 Java 代码也可以转换为有效的 Groovy 代码,Groovy 和 Java 语言的主要区别是:完成同样的任务所需的 Groovy 代码比 Java 代码更少。...其特点为: 功能强大,例如提供了动态类型转换、闭包和元编程(metaprogramming)支持 支持函数式编程,不需要 main 函数 默认导入常用的包 类不支持 default 作用域,且默认作用域为...import groovy.xml.MarkupBuilder def xml = new MarkupBuilder() assert xml !...异常处理 Groovy 中的异常处理和 java 中的异常处理是一样的。...参考 //闭包体完成变量自增操作 { item++ } //闭包使用 空参数列表 明确规定这是无参的 { -> item++ } //闭包中有一个默认的参数[it],写不写无所谓 { println
但跟ant、maven不一样的是,它并没有使用xml语言,而是采用了Groovy语言,这使得它更加简洁、灵活,更加强大的是,gradle完全兼容maven和ivy。...assert aList[1] == 'string' assert aList[5] == null //第6个元素为空 aList[100] = 100 //设置第101个元素的值为100...assert aList[100] == 100 //此时,aList的大小为101 println aList.size ===>101 Range Range是Groovy对List...例如,将test.groovy转换为Java类的代码为: groovyc -d classes test.groovy Gradle gradle跟maven一样,也有一个配置文件,maven里面是叫pom.xml...将xml文件夹中的所有内容拷贝到destination文件夹中。
JVM、通用灵活的项目构建工具,支持 Maven,JCenter 多种第三方仓库;支持传递性依赖管理、废弃了繁杂的 xml 文件,转而使用简洁的、支持多种语言 (例如:java、groovy 等) 的...Maven: 2004 年 Apache 组织推出的再次使用 xml 文件 [pom.xml] 管理项目的构建工具。...其特点为: 功能强大,例如提供了动态类型转换、闭包和元编程(metaprogramming)支持 支持函数式编程,不需要 main 函数 默认导入常用的包 类不支持 default 作用域,且默认作用域为...import groovy.xml.MarkupBuilder def xml = new MarkupBuilder() assert xml !...参考:http://www.groovy-lang.org/closures.html //闭包体完成变量自增操作 { item++ } //闭包使用 空参数列表 明确规定这是无参的 { -> item
介绍 本篇内容为Groovy学习笔记第31篇。继续学习语法相关的知识点。本篇的重点是Expressions(表达式)的相关知识点。...Groovy通过指定某些感兴趣数据的层次结构中的路径,为访问分层数据结构提供了特殊支持。这些Groovy路径表达式称为GPath表达式。...例如,可以指定感兴趣对象或元素的路径: a.b.c : 在xml中可以表示,在a中生成b中的所有c元素。 a.b.c : 在POJOS对象中可以表示,为a的所有b属性生成c属性。...有关在Groovy中使用XML的更多详细信息,请参阅处理XML。 PS:这里就不详细介绍如何处理XML文件了。...如果想了解XML文件的处理可以阅读:http://docs.groovy-lang.org/docs/groovy-4.0.6/html/documentation/#processing-xml。
getLoggerConfiguration(String loggerName) { return null; } } NoOpLoggingSystem继承了LoggingSystem,其方法都是空操作...", "logback-test.xml", "logback.groovy", "logback.xml" }; } //...... } LogbackLoggingSystem继承了Slf4JLoggingSystem...,其getStandardConfigLocations返回logback-test.groovy, logback-test.xml, logback.groovy, logback.xml beforeInitialize...、AbstractLoggingSystem、Slf4JLoggingSystem,依次继承,而LogbackLoggingSystem则继承Slf4JLoggingSystem,它主要是定义了要加载的默认的配置文件...logback-test.groovy, logback-test.xml, logback.groovy, logback.xml,以及loadDefaults方法,通过LOG_LEVEL_PATTERN
一、setParent 方法中设置父节点与子节点关系 ---- 在自定义的 Xml 生成器 MyBuilderSupport 中的 setParent 方法是设置节点之间父子关系的方法 , 在调用了...Object createNode(Object name, Map attributes, Object value) 方法返回非空值后 , 会自动回调该方法 ; ( 注意 : 一定要返回非空值 )...Xml 中的父节点 * @param child Xml 中的父节点下的子节点 */ @Override protected void setParent(Object...name 节点是子节点 ; 创建 节点时 , 输出 age, null, 18 setParent parent : student , child : age 该节点名称是 age , 属性 为空...* @param parent Xml 中的父节点 * @param child Xml 中的父节点下的子节点 */ @Override protected