beeltsql:BeetSql是一个全功能DAO工具,适用于承认以SQL为中心,同时又需求工具能自动能生成大量常用的SQL的应用.
例子:
注意点:
- 通过pro生成数据库表,需要:注明主键(@AutoID)后复合主键(@AssignID),如果有id,默认以id为主键。
- 使用sql文件:sql文件的地址:在src目录下建立一个sql目录,或者maven工程的resources目录(new ClasspathLoader("/sql")),其文件放在/sql下,并且文件命名我***.md或者***.sql
- 使用sql文件的路径映射:sqlId 到sql文件的映射是通过类SQLIdNameConversion来完成的:,beetlsql会在根目录下寻找/user.sql,/user.md ,也会找数据库方言目录下寻找,例如:mysql数据库,则优先寻找/mysql/user.md,/mysql/user.sql 然后在找/user.md,/user.sql.
- 命名转换问题:
1. DefaultNameConversion 数据库名和java属性名保持一致
2. UnderlinedNameConversion 将数据库下划线去掉,首字母大写(SYS_USER-SysUser)
3. JPA2NameConversion 支持JPA方式的映射:
规则如下: 1 在类名前使用Table注解映射的表名,例如:@Table(name = “PF_TEST”),表示映射的表名是PF_TEST; 2 忽略静态变量以及被@Transient注解的属性; 3 默认属性名与库表的字段名保持一致,如果不一致时,可以使用@Column注解。
4.自定义命名转化:实现DefaultNameConversion实现方式
public class DefaultNameConversion extends NameConversion {
@Override
public String getTableName(Class<?> c) {
Table table = (Table)c.getAnnotation(Table.class);
if(table!=null){
return table.name();
}
return c.getSimpleName();
}
@Override
public String getColName(Class<?> c, String attrName) {
return attrName;
}
@Override
public String getPropertyName(Class<?> c, String colName) {
return colName;
}
}
5.通过mapper来访问数据库:
6. sql语句里的ORM查询
使用需要SqlManager,创建SqlManager
BeetlSql2.8.11 提供了 SQLManagerBuilder来链式创建SQLManager
SQLManager sqlManager = SQLManager.newBuilder(driver, url, userName, password).addInterDebug().build();
重点sql文件的书写:
注释是以* 开头,注释语句不作为sql语句
默认的ClasspathLoader采用了这种方法,你可以实现SQLLoader来实现自己的格式和sql存储方式,如数据库存储
采用sql 自己的注释符号,"-- "
beetl注释/* */
sql整个语句注释