当前位置: 首页 > news >正文

SqlUtils 使用

一、前言

随着 Solon 3.0 版本发布,新添加的 SqlUtils 接口,用于操作数据库,SqlUtils 是对 Jdbc 原始接口的封装。适合 SQL 极少或较复杂,或者 ORM 不适合的场景使用。

二、SqlUtils 使用

1、引入依赖
<dependency><groupId>org.noear</groupId><artifactId>solon-data-sqlutils</artifactId>
</dependency>
2、新建数据库表(for MySql)
CREATE TABLE `book`  (`id` bigint(20) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`author` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
3、定义实体类

使用了 lombok 的注解。

@Data
public class Book {private Long id;private String name;private String author;
}
4、添加数据源配置
solon.dataSources:book!: # ‘!’结尾表示默认class: "com.zaxxer.hikari.HikariDataSource"jdbcUrl: jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=truedriverClassName: com.mysql.cj.jdbc.Driverusername: rootpassword: 123456
5、注入 SqlUtils 并使用

注入

@Component
public class BookDao {@Injectprivate SqlUtils sqlUtils;
}

查询操作

public List<Book> getAllBooks() {return sqlUtils.sql("select * from book").queryRowList().toBeanList(Book.class);
}

新增操作

public Long addBook(Book book) {return sqlUtils.sql("INSERT INTO book (name , author) VALUES (?,?)", book.getName(), book.getAuthor()).updateReturnKey();
}

更新操作

public int updateBook(Book book) {return sqlUtils.sql("UPDATE book SET name=?, author=? WHERE id=?", book.getName(), book.getAuthor(), book.getId()).update();
}

总结

使用 SqlUtils 可以完成基本的数据库操作,有更好的透明性。当然,持久化数据库操作 ORM 是更方好方案。具体根据开发决定。

http://www.lryc.cn/news/465783.html

相关文章:

  • 平面声波——一维Helmhotz波动方程
  • 深度学习 简易环境安装(不含Anaconda)
  • Java缓存技术(java内置缓存,redis,Ehcache,Caffeine的基本使用方法及其介绍)
  • YoloV9改进策略:主干网络改进|DeBiFormer,可变形双级路由注意力|全网首发
  • 【力扣 | SQL题 | 每日3题】力扣2988,569,1132,1158
  • 移动网络知识
  • CentOS系统Nginx的安装部署
  • Leetcode 最长公共前缀
  • [C#][winform]基于yolov5的驾驶员抽烟打电话安全带检测系统C#源码+onnx模型+评估指标曲线+精美GUI界面
  • 【Flutter】基础入门:开发环境搭建
  • AI学习指南深度学习篇-对比学习(Contrastive Learning)简介
  • 【蓝队技能】【规则开发1】Suricata-C2Webshell隧道
  • 全面了解 NGINX 的负载均衡算法
  • Java-继承与多态-上篇
  • 通过比较list与vector在简单模拟实现时的不同进一步理解STL的底层
  • 软件I2C的代码
  • 登录时用户名密码加密传输(包含前后端代码)
  • ai聊天对话页面-uniapp
  • 虚拟滚动列表如何实现?
  • 07_Linux网络配置与管理:命令与工具指南
  • 首个统一生成和判别任务的条件生成模型框架BiGR:专注于增强生成和表示能力,可执行视觉生成、辨别、编辑等任务
  • 【Java知识】Java进阶-服务发现机制SPI
  • 多模态技术的协同表现:从文本生成、语音合成到口型同步综合测评
  • Java最全面试题->Java主流框架->Srping面试题
  • 参编国家标准需要注意的事项有哪些?
  • 【Dash】feffery_antd_components 按钮组件的应用
  • 01 springboot-整合日志(logback-config.xml)
  • Java最全面试题->计算机基础面试题->计算机网络面试题
  • VSCode编译器改为中文
  • 前端开发设计模式——状态模式