public class SQLManager extends Object implements DataAPI
SqlId 检索SQL模板MapperBuilder,
SqlId,SqlIdFactory,SQLLoader,
SQLSource,SQLExecutor,SQLResult,SQLReady,
BeanProcessor| 限定符 | 构造器和说明 |
|---|---|
protected |
SQLManager() |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
addIdAutoGen(String name,
IDAutoGen algorithm)
设置一种id算法用于注解AssignId("xxx"),这样,对于应用赋值主键,交给beetlsql来处理了
|
void |
addVirtualTable(String realTable,
String virtualTable)
为不存在的表设置一个数据库真正的表,以用于获取metadata
主要用于数据库分库分表
|
<T> List<T> |
all(Class<T> clazz)
btsql自动生成查询语句,查询clazz代表的表的所有数据。
|
<T> List<T> |
all(Class<T> clazz,
Object start,
Long pageSize) |
long |
allCount(Class<?> clazz)
查询记录数
|
protected void |
assignAutoId(Object bean,
Object id) |
BigDecimal |
bigDecimalValue(SqlId id,
Object paras)
将查询结果返回成BigDecimal类型
|
boolean |
containSqlId(SqlId sqlId) |
int |
deleteById(Class<?> clazz,
Object pkValue)
delete from user where 1=1 and id= #id#
根据Id删除数据:支持联合主键
|
int |
deleteObject(Object obj)
删除对象, 通过对象的主键
|
<T> List<T> |
execute(SqlId sqlId,
String sqlTemplate,
Class<T> clazz,
Object paras)
直接执行语句,sql是模板 提供sqlId
|
<T> List<T> |
execute(SqlId sqlId,
String sqlTemplate,
Class<T> clazz,
Object paras,
Object start,
long size) |
<T> List<T> |
execute(SQLReady p,
Class<T> clazz)
直接执行sql语句查询,sql语句已经是准备好的,采用preparedstatment执行
|
<T> PageResult<T> |
execute(SQLReady p,
Class<T> clazz,
PageRequest<T> pageRequest)
本地分页查询
|
<T> List<T> |
execute(String sqlTemplate,
Class<T> clazz,
Object paras)
直接执行语句,sql是模板
|
<T> List<T> |
execute(String sqlTemplate,
Class<T> clazz,
Object paras,
Object start,
long size)
直接执行sql模版语句,sql是模板
|
int[] |
executeBatchUpdate(SQLBatchReady batch) |
<T> T |
executeOnConnection(OnConnection<T> onConnection)
自己用Connection执行jdbc,通常用于存储过程调用,或者需要自己完全控制的jdbc
|
<T> PageResult<T> |
executePageQuery(SqlId sqlId,
String sqlTemplate,
Class<T> clazz,
Object paras,
PageRequest<T> request) |
<T> PageResult<T> |
executePageQuery(String sqlTemplate,
Class<T> clazz,
Object paras,
PageRequest<T> request)
sql 模板分页查询,记得使用page函数
|
<T> T |
executeQueryOne(SQLReady p,
Class<T> clazz) |
int |
executeUpdate(SqlId sqlId,
String sqlTemplate,
Object paras) |
int |
executeUpdate(SQLReady p)
直接执行sql语句,用于删除或者更新,sql语句已经是准备好的,采用preparedstatment执行
|
int |
executeUpdate(String sqlTemplate,
Object paras)
直接执行sql更新,sql是模板
|
boolean |
exist(Class<?> clazz,
Object pk)
是否有此对象
|
<T> T |
forceDataSource(DBRunner<T> runner)
强制使用某个数据源,DBRunner.MasterRunner,DBRunner.SlaveRunner或者继承DBRunner自定义.
|
protected int |
generalInsert(Class clazz,
Object paras,
boolean template) |
protected Object |
getAssignIdByIdAutoGen(String name,
String param,
String table)
根据某种算法自动计算id
|
String |
getCharset() |
ClassDesc |
getClassDesc(Class target) |
ClassLoaderKit |
getClassLoaderKit() |
DBStyle |
getDbStyle()
得到当前sqlmanager的数据库类型
|
BeanProcessor |
getDefaultBeanProcessors()
得到默认的jdbc到bean的处理类
|
ConnectionSource |
getDs() |
Interceptor[] |
getInters()
得到所有的Interceptor
|
<T> T |
getMapper(Class<T> mapperInterface) |
MapperBuilder |
getMapperBuilder() |
MetadataManager |
getMetaDataManager()
得到MetaDataManager,用来获取数据库元数据,如表,列,主键等信息
|
String |
getName() |
NameConversion |
getNc()
获取 NameConversion
|
protected SQLExecutor |
getPageSqlScript(Class mapping,
SqlId selectId)
获取为分页语句
|
Map<String,BeanProcessor> |
getProcessors()
获取特殊的BeanPorcessor
|
SQLExecutor |
getScript(Class<?> cls,
AutoSQLEnum autoSQLEnum)
得到增删改查模板
|
SQLExecutor |
getScript(SqlId sqlId)
得到指定sqlId的sqlscript对象
|
SqlIdFactory |
getSqlIdFactory() |
SQLLoader |
getSqlLoader() |
SQLManagerExtend |
getSqlManagerExtend() |
SQLResult |
getSQLResult(SqlId id,
Object paras)
不执行数据库操作,仅仅得到一个sql模板执行后的实际得sql和相应的参数
|
SQLResult |
getSQLResult(SqlId id,
Object paras,
boolean isUpdate) |
SQLResult |
getSQLResult(SqlId id,
Object paras,
TemplateContext ctx) |
SQLResult |
getSQLResult(SQLSource source,
Object inputParas)
内部使用,
|
SQLTemplateEngine |
getSqlTemplateEngine()
得到sql模板引擎
|
TableDesc |
getTableDesc(String table) |
int |
insert(Class clazz,
Object paras)
插入一行记录
|
int |
insert(Object paras)
通用插入操作
|
int |
insert(SqlId sqlId,
Object paras)
插入,并获取主键,主键将通过paras所代表的表名来获取
|
Object[] |
insert(SqlId sqlId,
Object paras,
String[] cols)
插入单条,并获取自增主键值,因为此接口并未指定实体对象,因此需要keyName来指明数据库主键列
对于一次插入多条,不支持TODO,需要试一下
|
int[] |
insertBatch(Class clazz,
List<?> list)
批量插入
|
int |
insertTemplate(Class clazz,
Object paras)
模板插入,非空值插入到数据库,并且获取到自增主键的值
|
int |
insertTemplate(Object paras)
通用模板插入
|
Integer |
intValue(SqlId id,
Object paras)
将查询结果返回成Integer类型
|
boolean |
isOffsetStartZero() |
boolean |
isProduct() |
boolean |
isProductMode()
是否是生产模式:生产模式MetadataManager ,不查看sql文件变化,默认是false
|
boolean |
isQueryLogicDeleteEnable() |
<T> LambdaQuery<T> |
lambdaQuery(Class<T> clazz) |
<T> T |
lock(Class<T> clazz,
Object pk)
一个行级锁实现,类似select * from xx where id = ?
|
Long |
longValue(SqlId id,
Object paras)
将查询结果返回成Long类型
|
static SQLManagerBuilder |
newBuilder(ConnectionSource ds)
使用这个创建更加的简洁, 并且用户不需要理解更多的 构造函数
|
static SQLManagerBuilder |
newBuilder(String driver,
String url,
String userName,
String password)
快速上手的简洁构建器
|
<T> PageResult<T> |
pageQuery(SqlId sqlId,
Class<T> clazz,
Object paras,
PageRequest request) |
<T> Query<T> |
query(Class<T> clazz) |
void |
refresh()
清空sqlmanager,只能适用于开发模式,比如数据库在线调整后,生成的sql,缓存的数据库定义发生变化
|
void |
register() |
SQLManager |
resultSetMapper(Class resultSetMapperClass) |
SQLManager |
rowMapper(Class rowMapperClass) |
<T> List<T> |
select(SqlId sqlId,
Class<T> clazz)
根据sqlId查询目标对象
|
<T> List<T> |
select(SqlId sqlId,
Class<T> clazz,
Object paras)
通过sqlId进行查询,查询结果映射到clazz上,输入条件是个Bean,
Bean的属性可以被sql语句引用,如bean中有name属性,即方法getName,则sql语句可以包含 name属性,如select *
from xxx where name = #name#
|
<T> List<T> |
select(SqlId sqlId,
Object paras,
Class<T> clazz,
Object start,
long size) |
<T> List<T> |
selectByIds(Class<T> clazz,
List<?> pks) |
<T> T |
selectSingle(SqlId sqlId,
Object paras,
Class<T> target)
返回查询的第一行数据,如果有未找到,返回null
|
<T> T |
selectUnique(SqlId id,
Object paras,
Class<T> target)
返回一行数据,如果有多行或者未找到,抛错
|
void |
setCharset(String charset) |
void |
setClassLoaderKit(ClassLoaderKit classLoaderKit)
设置classloder,如果没有,pojo的初始化使用ContextClassLoader或者加载Beetlsql的classLoader
|
void |
setDbStyle(DBStyle dbStyle) |
void |
setDefaultBeanProcessors(BeanProcessor defaultBeanProcessors)
设置默认的jdbc 到 bean的映射处理类,用户可以自己扩展处理最新的类型
|
void |
setDs(ConnectionSource ds)
设置ConnectionSource,参考ConnectionSourceHelper
|
void |
setInters(Interceptor[] inters)
设置Interceptor
|
void |
setMapperBuilder(MapperBuilder mapperBuilder) |
void |
setMetaDataManager(MetadataManager metaDataManager) |
void |
setName(String name) |
void |
setNc(NameConversion nc)
设置NameConversion
|
void |
setProcessors(Map<String,BeanProcessor> processors)
为指定的sqlId提供一个处理类,可以既可以是一个sqlId,也可以是namespace部分,
所有属于namesapce的都会被此BeanProcessor 处理
|
void |
setProduct(boolean product) |
void |
setQueryLogicDeleteEnable(boolean queryLogicDeleteEnable) |
void |
setSqlIdFactory(SqlIdFactory sqlIdFactory) |
void |
setSqlLoader(SQLLoader sqlLoader) |
void |
setSqlManagerExtend(SQLManagerExtend sqlManagerExtend) |
void |
setSQLTemplateEngine(SQLTemplateEngine sqlTemplateEngine) |
<T> T |
single(Class<T> clazz,
Object pk) |
<T> StreamData<T> |
stream(SqlId sqlId,
Class<T> clazz,
Object paras) |
<T> StreamData<T> |
streamExecute(SqlId sqlId,
String sqlTemplate,
Class<T> clazz,
Object para) |
<T> StreamData<T> |
streamExecute(SQLReady p,
Class<T> clazz)
返回一个流,适合处理超大量数据,此类必须再事务类处理完毕,不能脱离事务管理框架,参考StreamData#next方法,对事务判断
|
<T> StreamData<T> |
streamExecute(String sqlTemplate,
Class<T> clazz,
Object para) |
<T> List<T> |
template(T t) |
protected <T> long |
templateCount(Class<T> target,
Object paras) |
<T> long |
templateCount(T t)
查询总数
|
<T> T |
templateOne(T t) |
<T> T |
unique(Class<T> clazz,
Object pk)
根据主键查询 获取唯一记录,如果纪录不存在,将会抛出异常
|
int |
update(SqlId sqlId)
执行sql更新(或者删除)操作
|
int |
update(SqlId sqlId,
Map<String,Object> paras)
执行sql更新(或者删除语句)
|
int |
update(SqlId sqlId,
Object obj)
执行sql更新(或者删除)操作
|
int |
updateAll(Class<?> clazz,
Object param)
更新指定表
|
int[] |
updateBatch(SqlId sqlId,
List<?> list)
对pojo批量更新执行sql更新语句,list包含的对象是作为参数,所有属性参与更新
|
int[] |
updateBatchTemplateById(Class clz,
List<?> list)
批量模板更新方式,list包含的对象是作为参数,非空属性参与更新
|
int |
updateById(Object obj)
更新一个对象
|
int[] |
updateByIdBatch(List<?> list)
批量更新
|
int |
updateRawById(Object obj)
同updateById,但忽略@Version,@UpdateIgnore注解
|
int |
updateTemplateById(Class c,
Map paras) |
int |
updateTemplateById(Class c,
Object obj)
按照模板更新
|
int |
updateTemplateById(Object obj)
为null的值不参与更新,如果想更新null值,请使用updateById
|
boolean |
upsert(Object obj)
先判断是否主键为空,如果为空,则插入,如果不为空,则从数据库
出一条,如果未取到,则插入一条,其他情况按照主键更新
|
protected boolean |
upsert(Object obj,
boolean template)
先判断是否主键为空,如果为空,则插入,如果不为空,则从数据库
取出一条,如果未取到,则插入一条,其他情况按照主键更新
|
boolean |
upsertByTemplate(Object obj)
先判断是否主键为空,如果为空,则插入,如果不为空,则从数据库
取出一条,如果未取到,则插入一条,其他情况按照主键更新
|
SQLManager |
use(String name) |
SQLErrorInfo |
validateSqlId(SqlId id) |
SQLManager |
viewType(Class view) |
protected String name
public static SQLManagerBuilder newBuilder(ConnectionSource ds)
ds - 数据源public static SQLManagerBuilder newBuilder(String driver, String url, String userName, String password)
driver - 驱动url - urluserName - userNamepassword - passwordpublic <T> LambdaQuery<T> lambdaQuery(Class<T> clazz)
lambdaQuery 在接口中 DataAPIpublic boolean isOffsetStartZero()
public boolean isProductMode()
public SQLResult getSQLResult(SqlId id, Object paras)
id - paras - public SQLResult getSQLResult(SQLSource source, Object inputParas)
source - inputParas - public SQLResult getSQLResult(SqlId id, Object paras, TemplateContext ctx)
public SQLExecutor getScript(SqlId sqlId)
sqlId - public boolean containSqlId(SqlId sqlId)
public SQLErrorInfo validateSqlId(SqlId id)
validateSqlId 在接口中 DataAPIpublic SQLManager viewType(Class view)
public SQLManager resultSetMapper(Class resultSetMapperClass)
public SQLManager rowMapper(Class rowMapperClass)
public SQLExecutor getScript(Class<?> cls, AutoSQLEnum autoSQLEnum)
cls - clzautoSQLEnum - ConstantEnumprotected SQLExecutor getPageSqlScript(Class mapping, SqlId selectId)
selectId - public <T> List<T> select(SqlId sqlId, Class<T> clazz, Object paras)
public <T> PageResult<T> pageQuery(SqlId sqlId, Class<T> clazz, Object paras, PageRequest request)
public <T> List<T> selectByIds(Class<T> clazz, List<?> pks)
selectByIds 在接口中 DataAPIpublic <T> T lock(Class<T> clazz, Object pk)
public <T> T templateOne(T t)
templateOne 在接口中 DataAPIpublic <T> long templateCount(T t)
templateCount 在接口中 DataAPIt - public BigDecimal bigDecimalValue(SqlId id, Object paras)
bigDecimalValue 在接口中 DataAPIid - paras - public <T> T selectSingle(SqlId sqlId, Object paras, Class<T> target)
selectSingle 在接口中 DataAPIsqlId - paras - target - public <T> T selectUnique(SqlId id, Object paras, Class<T> target)
selectUnique 在接口中 DataAPIid - paras - target - public <T> List<T> select(SqlId sqlId, Object paras, Class<T> clazz, Object start, long size)
public int deleteById(Class<?> clazz, Object pkValue)
根据Id删除数据:支持联合主键
deleteById 在接口中 DataAPIclazz - pkValue - public int deleteObject(Object obj)
deleteObject 在接口中 DataAPIobj - 对象,必须包含了主键,实际上根据主键来删除public int insertTemplate(Object paras)
insertTemplate 在接口中 DataAPIparas - public int insertTemplate(Class clazz, Object paras)
insertTemplate 在接口中 DataAPIclazz - paras - public int[] insertBatch(Class clazz, List<?> list)
insertBatch 在接口中 DataAPIclazz - list - public Object[] insert(SqlId sqlId, Object paras, String[] cols)
public boolean upsert(Object obj)
public boolean upsertByTemplate(Object obj)
upsertByTemplate 在接口中 DataAPIobj - protected boolean upsert(Object obj, boolean template)
obj - 待更新/插入的实体对象template - public int updateById(Object obj)
updateById 在接口中 DataAPIobj - public int updateRawById(Object obj)
updateRawById 在接口中 DataAPIobj - public int updateTemplateById(Object obj)
updateTemplateById 在接口中 DataAPIobj - public int updateTemplateById(Class c, Map paras)
updateTemplateById 在接口中 DataAPIc - c对应的表名paras - 参数,仅仅更新paras里包含的值,paras里必须带有主键的值作为更新条件public int updateTemplateById(Class c, Object obj)
updateTemplateById 在接口中 DataAPIc - obj - public int[] updateByIdBatch(List<?> list)
updateByIdBatch 在接口中 DataAPIlist,包含同一个类型的pojo - public int update(SqlId sqlId)
public int[] updateBatch(SqlId sqlId, List<?> list)
updateBatch 在接口中 DataAPIsqlId - list - public int[] updateBatchTemplateById(Class clz, List<?> list)
updateBatchTemplateById 在接口中 DataAPIclz - list - public <T> List<T> execute(SqlId sqlId, String sqlTemplate, Class<T> clazz, Object paras)
public <T> List<T> execute(String sqlTemplate, Class<T> clazz, Object paras, Object start, long size)
public <T> List<T> execute(SqlId sqlId, String sqlTemplate, Class<T> clazz, Object paras, Object start, long size)
public <T> PageResult<T> executePageQuery(String sqlTemplate, Class<T> clazz, Object paras, PageRequest<T> request)
executePageQuery 在接口中 DataAPIsqlTemplate - select #page(*)# from user where name=#userName# ....clazz - request - public <T> PageResult<T> executePageQuery(SqlId sqlId, String sqlTemplate, Class<T> clazz, Object paras, PageRequest<T> request)
executePageQuery 在接口中 DataAPIpublic int executeUpdate(String sqlTemplate, Object paras)
executeUpdate 在接口中 DataAPIsqlTemplate - paras - public int executeUpdate(SqlId sqlId, String sqlTemplate, Object paras)
executeUpdate 在接口中 DataAPIpublic <T> List<T> execute(SQLReady p, Class<T> clazz)
public <T> T executeQueryOne(SQLReady p, Class<T> clazz)
executeQueryOne 在接口中 DataAPIpublic <T> StreamData<T> streamExecute(SQLReady p, Class<T> clazz)
streamExecute 在接口中 DataAPIT - p - clazz - public <T> StreamData<T> streamExecute(String sqlTemplate, Class<T> clazz, Object para)
streamExecute 在接口中 DataAPIpublic <T> StreamData<T> streamExecute(SqlId sqlId, String sqlTemplate, Class<T> clazz, Object para)
streamExecute 在接口中 DataAPIpublic <T> StreamData<T> stream(SqlId sqlId, Class<T> clazz, Object paras)
public <T> PageResult<T> execute(SQLReady p, Class<T> clazz, PageRequest<T> pageRequest)
public int executeUpdate(SQLReady p)
executeUpdate 在接口中 DataAPIp - public int[] executeBatchUpdate(SQLBatchReady batch)
executeBatchUpdate 在接口中 DataAPIpublic <T> T executeOnConnection(OnConnection<T> onConnection)
onConnection - public <T> T forceDataSource(DBRunner<T> runner)
sqlManager.forceDataSource(new DBRunner.MasterRunner(){
public void run(SQLManager sqlManager){
sqlManager.select .....
}
)
如下代码,强制更新从库
sqlManager.forceDataSource(new DBRunner.SlaveRunner(){
public void run(SQLManager sqlManager){
sqlManager.update()
}
)
runner - public SQLLoader getSqlLoader()
public void setSqlLoader(SQLLoader sqlLoader)
public ConnectionSource getDs()
public void setDs(ConnectionSource ds)
ds - public NameConversion getNc()
public void setNc(NameConversion nc)
nc - public DBStyle getDbStyle()
public void setDbStyle(DBStyle dbStyle)
public SQLTemplateEngine getSqlTemplateEngine()
public MetadataManager getMetaDataManager()
public void setMetaDataManager(MetadataManager metaDataManager)
public Interceptor[] getInters()
public void setInters(Interceptor[] inters)
inters - public void addIdAutoGen(String name, IDAutoGen algorithm)
name - algorithm - protected Object getAssignIdByIdAutoGen(String name, String param, String table)
name - param - public Map<String,BeanProcessor> getProcessors()
public void setProcessors(Map<String,BeanProcessor> processors)
processors - public BeanProcessor getDefaultBeanProcessors()
public void setDefaultBeanProcessors(BeanProcessor defaultBeanProcessors)
defaultBeanProcessors - public <T> T getMapper(Class<T> mapperInterface)
public ClassLoaderKit getClassLoaderKit()
public void setClassLoaderKit(ClassLoaderKit classLoaderKit)
classLoaderKit - public void addVirtualTable(String realTable, String virtualTable)
virtualTable - realTable - public SqlIdFactory getSqlIdFactory()
public void setSqlIdFactory(SqlIdFactory sqlIdFactory)
public String getCharset()
public void setCharset(String charset)
public boolean isProduct()
public void setProduct(boolean product)
public void setSQLTemplateEngine(SQLTemplateEngine sqlTemplateEngine)
public SQLManager use(String name)
public String getName()
public void setName(String name)
public void register()
public MapperBuilder getMapperBuilder()
public void setMapperBuilder(MapperBuilder mapperBuilder)
public SQLManagerExtend getSqlManagerExtend()
public void setSqlManagerExtend(SQLManagerExtend sqlManagerExtend)
public boolean isQueryLogicDeleteEnable()
public void setQueryLogicDeleteEnable(boolean queryLogicDeleteEnable)
public void refresh()
Copyright © 2022. All rights reserved.