Groovy语言

  • 前言
  • 一、 Groovy火吗?
  • 二、Groovy的特点
  • 三、使用步骤
    • 3.1 导入pom.xml依赖
    • 3.2 配置application.yml
    • 3.3 编写API接口
    • 3.4 编写业务层
    • 3.5 测试
  • 四、集成Groovy
    • 4.1 导入pom.xml依赖
    • 4.2 编写API接口
    • 4.3 编写业务层
    • 4.4 测试
  • 五、插入数据对比
    • 5.1 Java的方式
    • 5.2 Groovy的方式
  • 六、Groovy基本语法
    • 6.1 打印输出
    • 6.2 关键字
    • 6.3 数据类型
    • 6.4 变量
    • 6.5 循环
    • 6.6 三目运算符
    • 6.7 捕获异常
    • 6.8 switch
    • 6.9 数据类型转换
    • 6.10 对象转json 、 json 转对象
    • 6.11 集合对象转json 、json 转集合对象
  • 总结

前言

Groovy是一种功能强大,可选类型和动态 语言,与静态打字和静态编译功能,支持Java平台旨在提高开发人员的生产力得益于简洁,熟悉且简单易学的语法。它可以与任何Java程序顺利集成,并立即为您的应用程序提供强大的功能,包括脚本编写功能,领域特定语言编写,运行时和编译时元编程以及函数式编程。


一、 Groovy火吗?

编程语言五月排行榜

二、Groovy的特点

Groovy中有以下特点:

  • 同时支持静态和动态类型。
  • 支持运算符重载。
  • 本地语法列表和关联数组。
  • 对正则表达式的本地支持。
  • 各种标记语言,如XML和HTML原生支持。
  • Groovy对于Java开发人员来说很简单,因为Java和Groovy的语法非常相似。
  • 您可以使用现有的Java库。
  • Groovy扩展了java.lang.Object。

三、使用步骤

首先我们先集成JDBC,再结合Groovy使用。

3.1 导入pom.xml依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope>
</dependency>

3.2 配置application.yml

server:port: 8081
spring:datasource:url: jdbc:mysql://192.168.31.158:3306/testjdbc?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghaiusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Drivertype: com.mysql.cj.jdbc.MysqlDataSource

3.3 编写API接口

User实体类:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {/*** 主键*/private Integer id;/*** 账号*/private String username;/*** 密码*/private String password;
}

UserController控制器:

@RestController
@RequestMapping("/api")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/findAll")public List<Map<String, Object>> findAll(){return userService.findAll();}
}

3.4 编写业务层

@Service
public class UserService {@Autowiredprivate JdbcTemplate jdbcTemplate;public List<Map<String, Object>> findAll() {List<Map<String, Object>> list = jdbcTemplate.queryForList("SELECT * FROM t_user");if (list.size() > 0) {return list;}return null;}
}

3.5 测试

http://localhost:8081/api/findAll

四、集成Groovy

4.1 导入pom.xml依赖

<dependency><groupId>org.codehaus.groovy</groupId><artifactId>groovy-all</artifactId><version>3.0.7</version><type>pom</type>
</dependency>

4.2 编写API接口

@RestController
@RequestMapping("/api")
public class UserController {@Autowiredprivate UserService userService;@Autowiredprivate UserGroovyService userGroovyService;@GetMapping("/findAll")public List<Map<String, Object>> findAll(){return userService.findAll();}@GetMapping("/list")public List<User> list(){return userGroovyService.list();}
}

此时注意看我们新的接口list,它的返回值就是一个List集合,泛型是User对象,此时我们创建一个GroovyService接口业务层。

4.3 编写业务层

@Service
class UserGroovyService {@Autowiredprivate JdbcTemplate jdbcTemplateList<User> list() {return jdbcTemplate.queryForList("SELECT * FROM t_user") as List<User>}
}

仔细看jdbcTemplate.queryForList方法,我们查看一下他的源码:

它的返回值是一个List集合,泛型是一个map集合,按照之前我们jdbc的写法,那么我们们这个位置:

也要是这样的类型,否则就需要处理类型,但是我们使用Groovy语法,它就不需要,直接给我转换成我们想要的集合类型了。

4.4 测试

五、插入数据对比

5.1 Java的方式

@GetMapping("/jdbc-add")
public boolean add(){return userService.add();
}
public boolean add() {// 插入数据库Object[] args = new Object[]{"dt","123456"};int update = jdbcTemplate.update("INSERT INTO t_user(username, password) VALUES (?,?)", args);return update > 0;
}


5.2 Groovy的方式

@GetMapping("/groovy-add")
public boolean add1(){return userGroovyService.add();
}
boolean add() {def username = 'dt2'def passwpord = '123456'return jdbcTemplate.update("INSERT INTO t_user(username, password) VALUES (?,?)",username,passwpord )
}

六、Groovy基本语法

6.1 打印输出

class Example {static void main(String[] args) {println('Hello World')printf('Hello World')}
}

6.2 关键字

6.3 数据类型

6.4 变量


变量声明

class Example { static void main(String[] args) { // x is defined as a variable String x = "Hello";// The value of the variable is printed to the console println(x);}
}

定义变量
Groovy中支持动态类型,即定义变量的时候可以不指定其类型。Groovy中,变量定义可以使用关键字def。注意,虽然def不是必须的,但是为了代码清晰,建议还是使用def关键字

def a = 1 //定义一个整形def b = "字符串" //定义一个字符串def double c = 1.0  //定义一个 double 类型,也可以指定变量类型

定义函数

//无参函数
def fun1(){}//有参函数 , 无需指定参数类型
def fun2( def1 , def2 ){}

6.5 循环

使用…表示区间范围:

for (i in 0..5){println("hello world")
}

6.6 三目运算符

def name = 'd'
def result = name ?: "abc"
println (result)

6.7 捕获异常

try {println 5 / 0
} catch (anything) {println (anything)
}

6.8 switch

age = 36
def rateswitch (age) {case 10..26:rate = 0.05breakcase 27..36:rate = 0.06breakcase 37..46:rate = 0.07breakdefault:throw new IllegalArgumentException()
}println( rate)

6.9 数据类型转换

//String 转成 int
def s2 = s1 as int//String 转成 int
def s3 = s1.asType(Integer)

6.10 对象转json 、 json 转对象

Person person = new Person();
person.name = "zhaoyanjun"
person.age = 27//把对象转换为 json 字符串
def json =JsonOutput.toJson(person)println(json)JsonSlurper jsonSlurper = new JsonSlurper()//把字符串转换为对象
Person person1 = jsonSlurper.parseText(json)println( person1.name )

6.11 集合对象转json 、json 转集合对象

Person person = new Person();
person.name = "zhaoyanjun"
person.age = 27Person person1 = new Person();
person1.name = "zhaoyanjun2"
person1.age = 28def list = [person,person1]//把集合对象转换为 json 字符串
def jsonArray =JsonOutput.toJson(list)println(jsonArray)JsonSlurper jsonSlurper = new JsonSlurper()//把字符串转换为集合对象
List<Person> list2 = jsonSlurper.parseText(jsonArray)println( list2.get(1).name )

总结

Groovy是一种动态语言,它和Java类似(算是Java的升级版,但是又具备脚本语言的特点),都在Java虚拟机中运行。当运行Groovy脚本时它会先被编译成Java类字节码,然后通过JVM虚拟机执行这个Java字节码类。

Groovy语言之SpringBoot整合JDBC案例相关推荐

  1. Springboot 整合jsp案例

    Springboot 整合jsp案例 关键词 war包方式部署到tomcat,注意依赖scope和内置tomcat的排除 项目架构 配置文件:application.properties server ...

  2. SpringBoot整合JDBC数据库操作第二弹-配置基本数据库连接源

    SpringBoot整合JDBC数据库操作第二弹-配置基本数据库连接源 上篇文章我们讲到了如何配置整合JDBC的基础环境,这篇文章我们讲解一下如何去配置服务的DataSource数据库数据源,方便其对 ...

  3. Springboot整合JDBC和DBUtils,实现简单的增删改查.

    Springboot整合JDBC和DBUtils,实现简单的增删改查. 一.pom.xml文件 <?xml version="1.0" encoding="UTF- ...

  4. springboot整合freemarker案例

    springboot整合freemarker案例 1.pom.xml 2.application.properties 3.实体类 4.controller 5.取普通变量的值 6.遍历集合 7.遍历 ...

  5. springboot整合redis案例——点赞取消点赞

    目录 springboot与缓存 JSR-107 Spring缓存抽象 重要概念和缓存注解 springboot整合redis 案例一:Redis是实现点赞.取消点赞 一.Redis 缓存设计及实现 ...

  6. SpringBoot整合JDBC数据库操作第七弹-自定义RowMapper

    SpringBoot整合JDBC数据库操作第七弹-自定义RowMapper 上篇文章我们讲到了怎么对数据的查询操作,每次查询数据都会在返回中构建一个匿名类去封装返回结果,这样的话导致我们有大量的冗余代 ...

  7. SpringBoot整合JDBC、整合Druid数据源详解教程

    目录 一.整合JDBC 1. 环境准备 1. 创建数据库 2. 创建SpringBoot项目 3. IDEA连接数据库 2. 编写数据库配置信息 3. 编写测试类测试 4. CRUD操作数据库 1. ...

  8. 六十九、Springboot整合JDBC,连接Mysql

    @Author:Runsen 来源:尚硅谷 下面建议读者学习尚硅谷的B站的SpringBoot视频,我是学雷丰阳视频入门的. 具体链接如下:B站尚硅谷SpringBoot教程 文章目录 整合JDBC ...

  9. activeMQ基础学习和SpringBoot整合activeMQ案例

    昨天仔细研究了activeMQ消息队列,也遇到了些坑,昨天晚上也写了篇文章记录坑的内容,其实上篇文章(SpringBoot整合activeMQ消息队列手动签收(Session.CLIENT_ACKNO ...

最新文章

  1. WinCE开机默认语言设置 .
  2. i节点详解以及软连接和硬链接的区别
  3. mysql 读写分离 max_MaxScale实现MySQL读写分离和负载均衡
  4. 福利 | 全网疯传免费领,一整套算法课程,拿走不谢!
  5. memcpy函数_[PART][BUG][MSVCRT][C][CCF NOI1097] 关于memcpy的坑
  6. MiniDao 比Mybatis还灵活实用的J2EE 持久层轻量级解决方案
  7. vue工程打包上线样式错乱问题 - bug解决(4种)
  8. 利用melendy插入参考文献_如何利用mendeley搞定SCI论文参考文献,这篇一定要看
  9. 信息技术产业的黄金十年?听听他怎么说
  10. iOS开发,第三方应用微信授权登录,获取微信unionid
  11. Atitit 三论”(系统论、控制论、信息论
  12. 第十六章 python Pygame的使用
  13. 小程序学习笔记01 - 图片识别
  14. Mybaits-Plus Invalid bound statement (not found) 问题
  15. 11月全球浏览器份额:IE蝉联霸主 份额继续下降
  16. 加速计算,加速智慧未来
  17. 服务器跑压力测试死机,我用鲁大师温度压力测试怎么死机了啊
  18. Linux 修改虚拟机IP地址
  19. 英飞凌硅麦焊接注意事项
  20. PNP型三极管与NPN型三极管区别

热门文章

  1. linux 获取命令行返回的数据_Linux | 活用CLI命令行进行数据处理与探索
  2. 信息学奥赛一本通(1407:笨小猴)
  3. 基础算法 —— 高精度计算 —— 高精度乘法
  4. 信息学奥赛C++语言:乘车费用
  5. 3.1 SE11创建域
  6. 创建mysql windows服务_MySQL的安装及创建(windows下操作)
  7. sql 不等于符号_SQL 必备知识 - 第一弹
  8. left join缺失右括号_LeetCode刷题实战31:最长有效括号
  9. bartender的安全策略不允许指定的用户执行此操作_Linux sudo 被曝提权漏洞,任意用户均能以 root 身份运行命令...
  10. ubuntu Could not get lock /var/lib/dpkg/lock解决方法