SmartDb 增、删、查、改、批量、事务
SmartDb 增、删、查、改、批量等操作是非常非常简单的,只要求你会sql就可以了~
1、增、删、改
具体使用 SmartDb.execute
方法,即可以完成操作
java
// 增加
smartDb.execute("insert into t_user values ('卓大','洛阳')");
smartDb.execute("insert into t_user values (?,?)", "卓大", "洛阳");
smartDb.execute("insert into t_user values (?,?)", Arrays.asList("卓大", "洛阳"));
// 修改
smartDb.execute("update t_user set name='卓大2', area='洛阳' where id = 1");
smartDb.execute("update t_user set name=?, area=? where id = ?", "卓大", "洛阳", 1);
smartDb.execute("insert into t_user values (?,?)", Arrays.asList("卓大", "洛阳", 1));
// 删除
smartDb.execute("delete from t_user where id = 1");
smartDb.execute("delete from t_user where id = ?", 1);
smartDb.execute("delete from t_user where id = ?", Arrays.asList(1));
2、批量
具体使用 SmartDb.batch
方法,即可以完成操作
java
// 批量
List<Object[]> batchParamsList = new ArrayList<>();
batchParamsList.add(new Object[]{"卓大","洛阳"});
batchParamsList.add(new Object[]{"zhuoda","luoyang"});
smartDb.batch("insert into t_user values (?,?) ",batchParamsList);
3、查询
查询可以使用 queryFirst和 queryList方法。方法定义如下:
<T> T queryFirst(Class<T> cls, String sql, Object... params);
<T> List<T> queryList(Class<T> cls, String sql, Object... params);
第一个参数 cls : 支持基本数据类型,比如int.class , Integer.class; 也支持用Map.class
来进行接收哦!!! 第二个参数 sql : 为具体的sql 语句 第三个可变参数 params : 为具体的sql 参数
使用JavaBean接收对象,请确保 配置正确的SmartDbBuilder的setTableNameConverter
和setColumnNameConverter
方法
3.1、查询单个
具体使用 SmartDb.queryFirst
方法,即可以完成操作
// 查询单条记录
UserEntity userEntity = smartDb.queryFirst(UserEntity.class,"select * from t_user where id = 1");
UserEntity userEntity1 = smartDb.queryFirst(UserEntity.class,"select * from t_user where id = ?", 1);
// 查询总计
Long count = smartDb.queryFirst(Long.class, "select count(*) from t_user ");
3.2、查询多个
具体使用 SmartDb.queryList
方法,即可以完成操作
// 查询多条记录
List<UserEntity> userEntityList = smartDb.queryList(UserEntity.class, "select * from t_user where id > 1");
List<UserEntity> userEntityList2 = smartDb.queryList(UserEntity.class,"select * from t_user where id > ?", 1);
3.3、使用Map.class来接收(内部使用HashMap实现)
java
List<Map> userMapList = smartDb.queryList(Map.class, "select * from t_user where id > 1");
for (Map map : userMapList) {
System.out.println( map.get("name") + " , " + map.get("area"));
}
4、分页
SmartDb 分页只提供了 SelectSqlBuilder
方式实现,具体可以查看SmartDb超级好用的Sql Builder模式
5、事务
SmartDb提供了两种操作事务的方式,一种为getConnection
分步骤操作,一种是实现一个TransactionRunnable
接口。
5.1 分步操作
- 通过
getConnection
方法 获取TransactionSmartDbNode
对象 2)使用TransactionSmartDbNode
对象进行事务的:
- begin 开启
- commit 提交
- rollback 回滚
代码如下:
java
// 获取事务对象
TransactionSmartDbNode transactionSmartDb = smartDb.getTransaction();
try {
//开启事务
transactionSmartDb.begin();
// 进行sql操作
transactionSmartDb.execute("delete from t_user where id = 1");
transactionSmartDb.execute("update t_user set name = ? where id = ?", "卓大", 2);
transactionSmartDb.batch("......",null);
//...
//提交事务
transactionSmartDb.commit();
} catch (SQLException t) {
log.error(t);
try {
// 回滚
transactionSmartDb.rollback();
} catch (SQLException e) {
log.error(e);
}
}finally {
// 最后释放连接!!!切记!!!
transactionSmartDb.releaseConnection();
}
5.2 使用lambda表达式实现接口执行
调用runTransaction
方法
java
smartDb.runTransaction(transactionSmartDb -> {
// 进行sql操作
transactionSmartDb.execute("delete from t_user where id = 1");
int rows = transactionSmartDb.execute("update t_user set name = ? where id = ?", "卓大", 2);
if(rows > 0){
transactionSmartDb.batch("......", null);
// 返回 true 表示提交事务
return true;
}else{
// 返回 false 表示 回滚
return false;
}
});