快速开始
本指南将帮助你在 5 分钟内快速上手 Unabo 框架。
环境要求
- JDK 8 或更高版本
- Maven 或 Gradle
- 数据库驱动(根据需要选择)
添加依赖
Maven
<dependency>
<groupId>online.sanen</groupId>
<artifactId>unabo</artifactId>
<version>1.2.4</version>
</dependency>
<!-- 数据库驱动(根据需要选择) -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<!-- 连接池(可选) -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>4.0.3</version>
</dependency>
Gradle
implementation 'online.sanen:unabo:1.2.4'
// 数据库驱动
implementation 'mysql:mysql-connector-java:8.0.33'
// 连接池(可选)
implementation 'com.zaxxer:HikariCP:4.0.3'
创建 Bootstrap 实例
Bootstrap 是 Unabo 的入口类,所有数据库操作都通过它进行。
方式一:使用 SQLite(最简单)
import online.sanen.unabo.api.Bootstrap;
import online.sanen.unabo.api.structure.enums.DriverOption;
import online.sanen.unabo.sql.factory.Unabo;
public class QuickStart {
public static void main(String[] args) {
// 创建 Bootstrap 实例
Bootstrap bootstrap = Unabo.load(configuration -> {
configuration.setUrl("jdbc:sqlite:test.db");
configuration.setDriverOption(DriverOption.SQLITE);
});
// 打印所有表名
System.out.println("Tables: " + bootstrap.dataInformation().getTablesAndViews());
// 关闭连接
bootstrap.close();
}
}
方式二:使用 MySQL
import online.sanen.unabo.api.Bootstrap;
import online.sanen.unabo.api.structure.enums.DriverOption;
import online.sanen.unabo.api.structure.enums.DatasourceType;
import online.sanen.unabo.sql.factory.Unabo;
public class QuickStart {
public static void main(String[] args) {
// 创建 Bootstrap 实例
Bootstrap bootstrap = Unabo.load("mysql", configuration -> {
configuration.setUrl("jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC");
configuration.setDriverOption(DriverOption.MYSQL_CJ);
configuration.setUsername("root");
configuration.setPassword("password");
configuration.setDatasourceType(Configuration.DatasourceType.HikariCP);
});
// 使用 Bootstrap 进行数据库操作
// ...
// 关闭连接
bootstrap.close();
}
}
方式三:使用 try-with-resources(推荐)
import online.sanen.unabo.api.Bootstrap;
import online.sanen.unabo.api.structure.enums.DriverOption;
import online.sanen.unabo.sql.factory.Unabo;
public class QuickStart {
public static void main(String[] args) {
// 使用 try-with-resources 自动关闭连接
try (Bootstrap bootstrap = Unabo.load(configuration -> {
configuration.setUrl("jdbc:sqlite:test.db");
configuration.setDriverOption(DriverOption.SQLITE);
})) {
// 数据库操作
// ...
} // 自动调用 bootstrap.close()
}
}
TIP
建议在生产环境中使用 try-with-resources 方式,确保资源正确释放。
创建表
使用 Map 创建表
import java.util.HashMap;
import java.util.Map;
// 准备表结构
Map<String, Object> userSchema = new HashMap<>();
userSchema.put("id", 1);
userSchema.put("name", "张三");
userSchema.put("age", 18);
// 创建表
bootstrap.queryMap("user", userSchema)
.setPrimary("id") // 设置主键
.create();
// 控制台输出:
// CREATE TABLE `user` (`age` integer,`name` text ,`id` integer NOT NULL AUTO_INCREMENT,PRIMARY KEY (`id`))
使用实体类创建表
import online.sanen.unabo.template.jpa.Table;
import online.sanen.unabo.template.jpa.Id;
import lombok.Data;
@Data
@Table(name = "user")
public class User {
@Id
private Integer id;
private String name;
private Integer age;
}
// 创建表
bootstrap.query(new User()).createTable();
插入数据
插入单条记录
// 使用 Map
Map<String, Object> user = new HashMap<>();
user.put("name", "李四");
user.put("age", 20);
bootstrap.queryMap("user", user).insert();
// 使用实体类
User user = new User();
user.setName("王五");
user.setAge(22);
bootstrap.query(user).insert();
批量插入
// 批量插入 Map
List<Map<String, Object>> users = new ArrayList<>();
for (int i = 0; i < 100; i++) {
Map<String, Object> user = new HashMap<>();
user.put("name", "用户" + i);
user.put("age", 18 + i % 30);
users.add(user);
}
bootstrap.queryMap("user", users).insert();
// 批量插入实体
List<User> users = new ArrayList<>();
for (int i = 0; i < 100; i++) {
User user = new User();
user.setName("用户" + i);
user.setAge(18 + i % 30);
users.add(user);
}
bootstrap.query(users).insert();
TIP
批量操作性能远高于循环单次操作,建议在插入大量数据时使用批量插入。
查询数据
查询所有记录
// 返回 Map 列表
List<Map<String, Object>> users = bootstrap.queryTable("user").maps();
// 返回实体列表
List<User> users = bootstrap.queryTable("user").list(User.class);
条件查询
import online.sanen.unabo.api.condition.C;
// 查询单条记录
Optional<Map<String, Object>> user = bootstrap.queryTable("user")
.addCondition(C.eq("id", 1))
.unique();
// 多条件查询
List<User> users = bootstrap.queryTable("user")
.addCondition(C.gt("age", 20))
.addCondition(C.like("name", "张%"))
.sort(Sorts.DESC, "id")
.list(User.class);
分页查询
import com.mhdt.structure.Page;
int currentPage = 1;
int pageSize = 10;
Page page = new Page(currentPage, pageSize);
int total = bootstrap.queryTable("user").count();
page.setCount(total);
List<User> users = bootstrap.queryTable("user")
.limit(page.skip(), pageSize)
.sort(Sorts.DESC, "id")
.list(User.class);
更新数据
// 先查询
Optional<User> optional = bootstrap.queryTable("user")
.addCondition(C.eq("id", 1))
.unique(User.class);
if (optional.isPresent()) {
User user = optional.get();
user.setName("张三丰");
user.setAge(30);
// 更新指定字段
bootstrap.query(user)
.setFields("name", "age")
.update();
}
删除数据
// 根据条件删除
bootstrap.queryTable("user")
.addCondition(C.eq("id", 1))
.delete();
// 批量删除
bootstrap.queryTable("user")
.addCondition(C.lt("age", 18))
.delete();
完整示例
import online.sanen.unabo.api.Bootstrap;
import online.sanen.unabo.api.condition.C;
import online.sanen.unabo.api.structure.enums.DriverOption;
import online.sanen.unabo.api.structure.enums.Sorts;
import online.sanen.unabo.sql.factory.Unabo;
import java.util.*;
public class CompleteExample {
public static void main(String[] args) {
// 1. 创建 Bootstrap
try (Bootstrap bootstrap = Unabo.load(configuration -> {
configuration.setUrl("jdbc:sqlite:demo.db");
configuration.setDriverOption(DriverOption.SQLITE);
configuration.setIsShowSql(true); // 显示 SQL
})) {
// 2. 创建表
Map<String, Object> schema = new HashMap<>();
schema.put("id", 1);
schema.put("name", "");
schema.put("age", 0);
bootstrap.queryMap("user", schema).setPrimary("id").create();
// 3. 插入数据
Map<String, Object> user = new HashMap<>();
user.put("name", "张三");
user.put("age", 25);
bootstrap.queryMap("user", user).insert();
// 4. 查询数据
List<Map<String, Object>> users = bootstrap.queryTable("user")
.addCondition(C.gt("age", 20))
.sort(Sorts.DESC, "id")
.maps();
System.out.println("用户列表: " + users);
// 5. 更新数据
bootstrap.queryTable("user")
.addCondition(C.eq("name", "张三"))
.update(Collections.singletonMap("age", 26));
// 6. 删除数据
bootstrap.queryTable("user")
.addCondition(C.eq("name", "张三"))
.delete();
} catch (Exception e) {
e.printStackTrace();
}
}
}
下一步
- 📖 基础 CRUD - 学习更多 CRUD 操作
- 📖 高级查询 - 掌握复杂查询技巧
- 📖 Spring Boot 集成 - 在 Spring Boot 中使用 Unabo
- 📖 性能优化 - 学习性能优化技巧
常见问题
Q: 如何关闭 SQL 日志?
A: 设置 configuration.setIsShowSql(false)
Q: 如何连接到其他数据库?
A: 修改 DriverOption 和连接 URL,支持 MySQL、PostgreSQL、Oracle、SQL Server 等
Q: 如何处理事务?
A: 参考 事务管理 文档
Q: 支持 MongoDB 吗?
A: 支持!使用 Unabo.nosql.load() 创建 MongoDB 实例,参考 MongoDB 操作 文档
获取帮助
- 📧 邮箱: 282854237@qq.com
- 🌐 官网: http://unabo.sanen.online
- 🐛 问题反馈: GitHub Issues