提交 dbb6b537 编写于 作者: X xiongchun

代码优化

上级 99c591fa
......@@ -39,5 +39,5 @@ pangu.jdbc.db-type=mysql
logging.file.name=logs/pangu.log
logging.level.root=INFO
logging.level.com.gitee.pulanos.pangu=info
logging.level.com.pulanit.pangu.admin.system.dao=debug
\ No newline at end of file
logging.level.com.gitee.pulanos.pangu=INFO
logging.level.com.pulanit.pangu.admin.system.dao=DEBUG
\ No newline at end of file
......@@ -32,7 +32,6 @@ public class RoleController {
*/
@GetMapping("/list")
public Result<PageResult<RoleEntity>> list(RoleIn roleIn) {
Console.log(roleIn);
PageResult<RoleEntity> pageResult = roleService.list(roleIn);
return Result.success(pageResult);
}
......
......@@ -204,6 +204,30 @@ public void aPageQuery(){
#### 基于手工映射 SQL 的分页查询
继续阅读本文后面的 [《手工编写SQL映射》](#手工编写sql映射) 章节可以找到。
#### 一个完整的分页查询例子
```jsx
// 分页入参对象
public class RoleIn extends Page {
private String name;
}
// Controller
@GetMapping("/list")
public Result<PageResult<RoleEntity>> list(RoleIn roleIn) {
PageResult<RoleEntity> pageResult = roleService.list(roleIn);
return Result.success(pageResult);
}
// Service实现
public PageResult<RoleEntity> list(RoleIn roleIn) {
Page<RoleEntity> page = PagingUtil.createPage(roleIn);
LambdaQueryWrapper<RoleEntity> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.like(ObjectUtil.isNotEmpty(roleIn.getName()), RoleEntity::getName, roleIn.getName());
roleMapper.selectPage(page, lambdaQueryWrapper);
return PagingUtil.getPageResult(page);
}
```
### 手工编写SQL映射
:::tip
一般来说在日常开发中我们是不需要再编写SQL代码的,Mapper API已经能满足我们的需求了。但对于一些特殊需求,我们也可以手工写SQL映射的方式来处理。如下范例演示了手工SQL查询的操作,新增、修改、删除也是同理。
......@@ -245,27 +269,10 @@ public void bSelect() {
@Mapper
public interface CrudMapper {
/**
* 分页查询
* @param page 分页查询对象
* @param param
* @return
*/
List<UserEntity> listUsersByPage(Page<UserEntity> page, Map<String, Object> param);
/**
* 分页查询
* @param page 分页查询对象
* @param userType
* @return
*/
List<Map<String, Object>> listUserMapsByPage(Page<Map<String, Object>> page, String userType);
/**
* 普通集合查询
* @param param
* @return
*/
List<UserEntity> listUsersByMap(Map<String, Object> param);
}
......@@ -311,22 +318,20 @@ public interface CrudMapper {
### 事务
单一数据源事务,直接使用 Spring 事务相关注解即可( `@EnableTransactionManagement``@Transactional` )。对于分布式事务请参阅 [《分布式事务》](/docs/advanced-guide/distributed-transaction) 章节。
### 字段值自动填充
Coming soon...
### 逻辑删除
Coming soon...
## 启动入口
```jsx {5}
@EnableTransactionManagement
@SpringBootApplication
public class CrudApplication {
public static void main(String[] args) {
PanGuApplicationBuilder.init(CrudApplication.class).run(args);
}
}
盘古框架借助 Mybatis Plus 对逻辑删除提供了非常友好的支持。通过如下简单配置即可实现从物理删除到逻辑删除在 CRUD 上面的无感体验。
```jsx
# 指定逻辑删除的标识字段
mybatis-plus.global-config.db-config.logic-delete-field=deleted
# 删除前的缺省值
mybatis-plus.global-config.db-config.logic-not-delete-value=0
# 删除后的值
mybatis-plus.global-config.db-config.logic-delete-value=id
```
#### 配置说明
- 逻辑删除字段 deleted 建议通过数据库设置默认值 0。
- 删除后的值建议不用 1,这会带来某字段需要唯一索引时的尴尬问题。因此建议将删除后的值更新为当前记录的 ID 字段值,如上配置所示。这时如果表中某字段需要建立唯一索引,则可以和 deleted 字段一起创建联合唯一索引。
- 查询和更新操作,框架会自动拼接逻辑删除字段作为条件。(AND deleted = 0)
## 本文相关范例源码
- [pangu-examples-crud](https://gitee.com/pulanos/pangu-framework/tree/master/pangu-examples/pangu-examples-crud):数据持久化参考范例
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册