## 环境搭建
创建一个Java类com.QuickTest,如下
```java
import com.zaxxer.hikari.HikariDataSource;
import org.beetl.sql.core.*;
import org.beetl.sql.core.db.H2Style;
import org.beetl.sql.ext.DBInitHelper;
import org.beetl.sql.ext.DebugInterceptor;
import javax.sql.DataSource;
import java.util.Set;
public class QuickTest {
private static DataSource datasource() {
HikariDataSource ds = new HikariDataSource();
//内存数据库
ds.setJdbcUrl("jdbc:h2:mem:dbtest;DB_CLOSE_ON_EXIT=FALSE");
ds.setUsername("sa");
ds.setPassword("");
ds.setDriverClassName("org.h2.Driver");
return ds;
}
private static SQLManager getSQLManager(){
//得到一个数据源
DataSource dataSource = datasource();
//得到一个ConnectionSource, 单数据源
ConnectionSource source = ConnectionSourceHelper.getSingle(dataSource);
//SQLManagerBuilder 唯一必须的参数就是ConnectionSource
SQLManagerBuilder builder = new SQLManagerBuilder(source);
//命名转化,数据库表和列名下划线风格,转化成Java对应的首字母大写,比如create_time 对应ceateTime
builder.setNc(new UnderlinedNameConversion());
//拦截器,非必须,这里设置一个debug拦截器,可以详细查看执行后的sql和sql参数
builder.setInters(new Interceptor[]{new DebugInterceptor()});
//数据库风格,因为用的是H2,所以使用H2Style,
builder.setDbStyle(new H2Style());
SQLManager sqlManager = builder.build();
return sqlManager;
}
public static void main(String[] args) throws Exception {
SQLManager sqlManager = getSQLManager();
//初始化数据脚本,执行后,内存数据库将有一个sys_user表和模拟数据
DBInitHelper.executeSqlScript(sqlManager,"db/schema.sql");
// 得到数据库的所有表
Set<String> all = sqlManager.getMetaDataManager().allTable();
System.out.println(all);
}
}
```
如上main方法将会得到一个sqlMannger类,这个是操作数据库的的基础类,提供了所有访问数据库的API。可以现在运行main方法,看看` System.out.println(all); `是否输出了sys_user.
> 实际项目,总是创建 Mapper接口 来代替SQLManager 的调用,SQLManager 属于一个基础底层的类。 关于Mapper,参考本章的《使用Mapper》
新建一个POJO对象 com.UserEntity,与sys_user表对应
```java
@Data
@Table(name="sys_user")
public class UserEntity {
@AutoID
private Integer id;
private String name;
private Integer departmentId;
}
```
这个Pojo对象我们注意到使用了@Table注解,表明了关联的表是sys_user. @Table注解是非必须的,如果符合命名转化(NameConversion).也可以不需要
@AutoID 作用于注解上,表示这是一个自增主键, 其他标识主键的注解还有@AssignID,@SeqID
@Data注解是,来自lombok,自动实现getter和setter方法。BeetlSQL 同其他流行框架一样,需要POJO遵循Java规范,如果你使用lombok,工程还需要依赖
```xml
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
```
如果你不是lombok,你需要为id和name属性添加getter和setter方法,如下
```java
@Table(name="sys_user")
public class UserEntity {
@AutoID
private Integer id; //通常数据库实体属性,都尽量避免原始类型
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
// 忽略name和departmentId
}
```
> 注意,BeetlSQL并不要求POJO与表完全对应,BeetlSQL只处理POJO和表的交集,因此,MyUser对象只有id和name属性。
>
> 注意:BeetlSQL处理的POJO必须符合JavaBean规范,也就是有getter和setter方法,且这些方法符合JavaBean命名规范。
- BeetlSQL 3 指南
- 数据访问框架
- 适合用户
- 编译源码
- 直接看代码
- 闲大赋介绍
- BeetlSQL3 特点
- 数据库访问工具的痛点
- BeetlSQL3 例子
- 基础例子
- 结果集映射
- 翻页查询
- 演示like,batchUpdate,in 操作
- 自动fetch
- 多数据库
- 代码生成框架
- 安装BeetlSQL
- 直接安装
- 框架集成
- 编译源码
- 快速开始
- 环境准备
- 环境搭建
- 使用BeetlSQL
- 按照主键查寻
- 更新
- 按照模板查询
- 执行SQL
- 执行模板SQL
- 使用Query
- 使用Mapper
- 使用模板文件
- SQLManager
- 内置语句
- 内置查询API
- template查询
- 更新操作
- 执行SQL
- 执行模板SQL
- 把SQL放到文件里
- 翻页查询
- SQLResult
- Stream查询
- 存储过程调用
- NameConversion(重要)
- DBStyle
- Inerceptor
- SQLManagerExtend
- 强制使用数据源
- Mapper
- 实现Mapper
- @Sql
- @Update @BatchUpdate
- @Template
- 参数名称
- 参数返回值
- 执行SQL文件
- 翻页查询
- @SqlProvider
- @SpringData
- @SubQuery
- @InheritMapper
- @Call
- StreamData
- Default Method
- 定义自己的BaseMapper
- 限制Java代码中SQL长度
- 数据模型
- POJO
- 不严格的POJO
- 交集(重要)
- @Table 注解
- @Column 注解
- 主键
- RowMapper
- ResultSetMapper
- Json配置映射
- Json自动映射
- XML支持
- 自动Fetch
- AttributeConvert
- BeanConvert
- 枚举
- 混合模型
- Map模型
- 动态模型
- 模型其他注解
- 安全扩展注解
- BeetlSql 单表查询工具Query
- Query使用方式和风格介绍
- Query主要操作简介
- 查询器获取
- SELECT简单的条件查询
- 复杂的条件查询
- 查询字段智能处理
- 健壮的变量
- 自定义实现
- INSERT操作
- UPDATE操作
- DELETE操作
- single查询和unique
- COUNT查询
- GROUP分组查询和Having子句
- 分页查询
- ORDER BY 排序
- page分页查询
- 方法调用顺序
- Markdown文件
- Beetl 入门
- 定界符号
- 变量
- 算数表达式
- 逻辑表达式
- 控制语句
- 访问变量属性
- 判断对象非空(重要)
- 调用方法
- 自定义方法
- 内置方法
- 标签功能
- 附录
- Idea 插件
- 代码生成
- 多库使用
- 业务主从库
- 主从库延迟问题
- 多个业务库
- 合并多个业务库 1
- 合并多个业务库 2
- 单表多租户
- 每个租户一个表
- 多库多租户
- 使用ShardingSphere
- Saga(试验)
- 关于Saga的一些认识
- 关于隔离性
- BeetlSQL Saga
- SagaMapper
- Saga 多库事务实现
- Saga 微服务 实现
- 配置 Saga Server
- Swagger
- BeetlSQL 性能
- 测试方法
- 最新
- 2021-11-21
- 2020-9-28
- Spring 快速开始
- 环境准备
- 环境搭建
- SpringBoot 快速开始
- 环境准备
- 环境搭建
- 扩展BeetlSQL3
- 完整配置
- BaseMapper定制
- 代码生成
- SQLExecutor定制
- 第三方
- MetadataManager
- JFinal集成
- ExecuteContext
- 参考ACT
- 数据库表到Java对象
- Solon
- NameConversion
- ViewType
- RowMapper
- ResultSetMapper
- AttributeConvert
- BeanConvert
- Fetch
- 代码生成
- 扩展BeetlSQL3
- BaseMapper定制
- SQLExecutor定制
- MetadataManager
- ExecuteContext
- 数据库表到Java对象
- NameConversion
- ViewType
- RowMapper
- ResultSetMapper
- AttributeConvert
- BeanConvert
- Fetch
- 代码生成
- BeetlSQL 多数据库支持
- 多库之间的不同
- 跨库支持实现
- DBStyle
- MySqlStyle 例子
- H2Style例子
- ClickHouseStyle例子
- HBaseStyle例子
- DruidStyle例子
- MetadataManager
- BeanProcessor
- 与BeetlSQL2的区别
- 使用区别