💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 环境搭建 创建一个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命名规范。