六边形工程师
主页
文章
开源
关于我
1024创新实验室
微信号:卓大 (六边形工程师)
毕业于:山东大学 计算机
地点:洛阳/郑州/上海
职位:六边形数字科技-CEO
近期:专注AI+中医/供应链/教育
技能:CTO / 产品经理 / 全栈工程师
领域:教育,供应链,中医大健康;
公众号:六边形工程师
名称:六边形工程师
分享:赚钱、代码、生活
分享:AI发展、AI变现
分享:互联网 运营/产品/技术
关注 :中医健康问题
二、SmartDb 增、删、查、改、批量、事务
|
分类于
SmartDb
SmartDb
前言:
SmartDb 增、删、查、改、批量等操作是非常非常简单的,只要求你会sql就可以了~(预计阅读1分钟)
#### 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
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 queryFirst(Class
cls, String sql, Object... params);
List
queryList(Class
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
userEntityList = smartDb.queryList(UserEntity.class, "select * from t_user where id > 1"); List
userEntityList2 = smartDb.queryList(UserEntity.class,"select * from t_user where id > ?", 1); ``` ##### 3.3、使用Map.class来接收(内部使用HashMap实现) ```java List
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`方式实现,具体可以查看 [https://zhuoluodada.cn/article/page/get/56](https://zhuoluodada.cn/article/page/get/56 "https://zhuoluodada.cn/article/page/get/56") #### 5、事务 SmartDb提供了两种操作事务的方式,一种为`getConnection` 分步骤操作,一种是实现一个`TransactionRunnable`接口。 ##### 5.1 分步操作 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; } }); ```
阅读 (5424)
喜欢 (
0
)
评论 (1)
走起吐槽