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;
}
});
联系我们
1024创新实验室-主任:卓大,混迹于各个技术圈,研究过计算机,熟悉点 java,略懂点前端。
1024创新实验室 致力于成为中原领先、国内一流的技术团队, 以AI+数字化为驱动,用技术为产业互联网提供无限可能, 业务如下:
- 教育(就业创业大数据平台、继续教育平台、在线教育系统、题库、医学考试、专升本等)
- 供应链(网络货运、大宗贸易进销存ERP、物流TMS、B2B电商、仓储WMS、AI提效等)
- 中医大健康(诊所数字化管理、AI辅助诊疗、中医适宜技术、在线问诊、空中药房等)
- AI+软件(软件定制外包、数据大屏、国产化改造、人员外包、技术顾问、技术培训等)
- 欢迎各类合作哦,一起赚钱~
加微信: 卓大 拉你入群,一起学习 | 公众号 :六边形工程师 分享:赚钱、代码、生活 | 请 “1024创新实验室” 烩面里加肉 咖啡配胡辣汤,提神又饱腹 | 抖音 : 六边形工程师 直播:赚钱、代码、中医 |