mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-07 00:58:24 +08:00
update 优化文档细节及代码格式
This commit is contained in:
parent
cfb77c493c
commit
c2eb57e102
@ -21,7 +21,7 @@ public class AccountController {
|
||||
@GetMapping("/accounts")
|
||||
List<Account> selectList() {
|
||||
|
||||
//构造 QueryWrapper
|
||||
//构造 QueryWrapper,也支持使用 QueryWrapper.create() 构造,效果相同
|
||||
QueryWrapper query = new QueryWrapper();
|
||||
query.where(ACCOUNT.ID.ge(100));
|
||||
|
||||
|
||||
@ -49,8 +49,25 @@ MyBatis-Flex 主要是和 `MyBatis-Plus` 与 `Fluent-Mybatis` 对比,内容来
|
||||
|
||||
**MyBatis-Flex:**
|
||||
|
||||
一般方式:
|
||||
````java
|
||||
QueryCondition condition = EMPLOYEE.LAST_NAME.like("B")
|
||||
QueryWrapper query = QueryWrapper.create()
|
||||
.where(EMPLOYEE.LAST_NAME.like(searchWord)) //条件为null时自动忽略
|
||||
.and(EMPLOYEE.GENDER.eq(1))
|
||||
.and(EMPLOYEE.AGE.gt(24));
|
||||
List<Employee> employees = employeeMapper.selectListByQuery(query);
|
||||
````
|
||||
更简单一点:
|
||||
````java
|
||||
QueryWrapper query = select()
|
||||
.where(EMPLOYEE.LAST_NAME.like(searchWord))
|
||||
.and(EMPLOYEE.GENDER.eq(1))
|
||||
.and(EMPLOYEE.AGE.gt(24));
|
||||
List<Employee> employees = employeeMapper.selectListByQuery(query);
|
||||
````
|
||||
换一种方式:
|
||||
````java
|
||||
QueryCondition condition = EMPLOYEE.LAST_NAME.like(searchWord)
|
||||
.and(EMPLOYEE.GENDER.eq(1))
|
||||
.and(EMPLOYEE.AGE.gt(24));
|
||||
List<Employee> employees = employeeMapper.selectListByCondition(condition);
|
||||
@ -59,19 +76,17 @@ List<Employee> employees = employeeMapper.selectListByCondition(condition);
|
||||
**MyBatis-Plus:**
|
||||
|
||||
````java
|
||||
QueryWrapper<Employee> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper
|
||||
.like("last_name","B")
|
||||
QueryWrapper<Employee> queryWrapper = Wrappers.query()
|
||||
.like(searchWord != null, "last_name", searchWord)
|
||||
.eq("gender", 1)
|
||||
.gt("age", 24);
|
||||
List<Employee> employees = employeeMapper.selectList(queryWrapper);
|
||||
````
|
||||
或者 MyBatis-Plus 的另一种写法:
|
||||
或者 MyBatis-Plus 的lambda写法:
|
||||
|
||||
```java
|
||||
LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper
|
||||
.like(Employee::getUserName,"B")
|
||||
LambdaQueryWrapper<Employee> queryWrapper = Wrappers.<Employee>lambdaQuery()
|
||||
.like(StringUtils.isNotEmpty(searchWord), Employee::getUserName,"B")
|
||||
.eq(Employee::getGender, 1)
|
||||
.gt(Employee::getAge, 24);
|
||||
List<Employee> employees = employeeMapper.selectList(queryWrapper);
|
||||
@ -82,7 +97,7 @@ List<Employee> employees = employeeMapper.selectList(queryWrapper);
|
||||
|
||||
````java
|
||||
EmployeeQuery query = new EmployeeQuery()
|
||||
.where.lastName().like("B")
|
||||
.where.lastName().like(searchWord, If::notNull)
|
||||
.and.gender().eq(1)
|
||||
.and.age().gt(24)
|
||||
.end();
|
||||
@ -96,7 +111,7 @@ List<Employee> employees = employeeMapper.listEntity(query);
|
||||
**MyBatis-Flex:**
|
||||
|
||||
````java
|
||||
QueryWrapper query = new QueryWrapper()
|
||||
QueryWrapper query = QueryWrapper.create()
|
||||
.select(
|
||||
ACCOUNT.ID,
|
||||
ACCOUNT.USER_NAME,
|
||||
@ -108,17 +123,16 @@ List<Employee> employees = employeeMapper.selectListByQuery(query);
|
||||
**MyBatis-Plus:**
|
||||
|
||||
````java
|
||||
QueryWrapper<Employee> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper
|
||||
QueryWrapper<Employee> queryWrapper = Wrappers.query()
|
||||
.select(
|
||||
"id"
|
||||
,"user_name"
|
||||
,"max(birthday)"
|
||||
,"avg(birthday) as sex_avg"
|
||||
"id",
|
||||
"user_name",
|
||||
"max(birthday)",
|
||||
"avg(birthday) as sex_avg"
|
||||
);
|
||||
List<Employee> employees = employeeMapper.selectList(queryWrapper);
|
||||
````
|
||||
> 缺点:字段硬编码,容易错处。无法使用 ide 的字段进行重构,无法使用 IDE 自动提示,发生错误不能及时发现。
|
||||
> 缺点:字段硬编码,容易拼错。无法使用 ide 的字段进行重构,无法使用 IDE 自动提示,发生错误不能及时发现。
|
||||
|
||||
|
||||
**Fluent-MyBatis:**
|
||||
@ -159,10 +173,15 @@ QueryWrapper query = QueryWrapper.create()
|
||||
**MyBatis-Plus:**
|
||||
|
||||
```java
|
||||
QueryWrapper<Employee> query = new QueryWrapper<>();
|
||||
queryWrapper.ge("id",100)
|
||||
QueryWrapper<Employee> query = Wrappers.query()
|
||||
.ge("id", 100)
|
||||
.and(i -> i.eq("sex", 1).or(x -> x.eq("sex", 2)))
|
||||
.or(i->i.in("age",{18,19,20}).like("user_name","michael"));
|
||||
.or(i -> i.in("age", 18, 19, 20).like("user_name", "michael"));
|
||||
// or lambda
|
||||
LambdaQueryWrapper<Employee> query = Wrappers.<Employee>lambdaQuery()
|
||||
.ge(Employee::getId, 100)
|
||||
.and(i -> i.eq(Employee::getSex, 1).or(x -> x.eq(Employee::getSex, 2)))
|
||||
.or(i -> i.in(Employee::getAge, 18, 19, 20).like(Employee::getUserName, "michael"));
|
||||
```
|
||||
|
||||
**Fluent-Mybatis:**
|
||||
|
||||
39
readme_zh.md
39
readme_zh.md
@ -88,7 +88,7 @@ class HelloWorld {
|
||||
//示例2:通过 QueryWrapper 构建条件查询数据列表
|
||||
QueryWrapper query = QueryWrapper.create()
|
||||
.select()
|
||||
.from(ACCOUNT)
|
||||
.from(ACCOUNT) // 单表查询时表名可省略,自动使用Mapper泛型对应的表
|
||||
.where(ACCOUNT.ID.ge(100))
|
||||
.and(ACCOUNT.USER_NAME.like("张").or(ACCOUNT.USER_NAME.like("李")));
|
||||
|
||||
@ -96,7 +96,7 @@ QueryWrapper query=QueryWrapper.create()
|
||||
// ELECT * FROM tb_account
|
||||
// WHERE tb_account.id >= 100
|
||||
// AND (tb_account.user_name LIKE '%张%' OR tb_account.user_name LIKE '%李%' )
|
||||
List<Account> accounts = mapper.selectListByQuery(query);
|
||||
List<Account> accounts = accountMapper.selectListByQuery(query);
|
||||
```
|
||||
|
||||
示例3:分页查询
|
||||
@ -126,19 +126,29 @@ Page<Account> accounts = mapper.paginate(5,10,query);
|
||||
|
||||
```java
|
||||
QueryWrapper query = new QueryWrapper();
|
||||
query.select().from(ACCOUNT)
|
||||
query.select().from(ACCOUNT);
|
||||
|
||||
// SQL:
|
||||
// SELECT * FROM tb_account
|
||||
```
|
||||
也可以通过静态方法简写成如下两种形式,效果完全相同:
|
||||
```java
|
||||
// 方式1
|
||||
QueryWrapper query = QueryWrapper.create()
|
||||
.select().from(ACCOUNT);
|
||||
// 方式2
|
||||
QueryWrapper query = select().from(ACCOUNT);
|
||||
|
||||
// SQL:
|
||||
// SELECT * FROM tb_account
|
||||
```
|
||||
### select columns
|
||||
|
||||
简单示例:
|
||||
```java
|
||||
QueryWrapper query = new QueryWrapper();
|
||||
query.select(ACCOUNT.ID, ACCOUNT.USER_NAME)
|
||||
.from(ACCOUNT)
|
||||
.from(ACCOUNT);
|
||||
|
||||
// SQL:
|
||||
// SELECT id, user_name
|
||||
@ -180,8 +190,9 @@ QueryWrapper query=new QueryWrapper()
|
||||
```
|
||||
|
||||
### where
|
||||
|
||||
```java
|
||||
Integer num = 100;
|
||||
String userName = "michael";
|
||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||
.select()
|
||||
.from(ACCOUNT)
|
||||
@ -221,6 +232,21 @@ QueryWrapper queryWrapper = QueryWrapper.create()
|
||||
// SELECT * FROM tb_account
|
||||
// WHERE user_name LIKE ?
|
||||
```
|
||||
### where 自动忽略 null 值
|
||||
当遇到条件值为 null 时,会自动忽略该条件,不会拼接到 SQL 中
|
||||
```java
|
||||
Integer num = null;
|
||||
String userName = "michael";
|
||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||
.select()
|
||||
.from(ACCOUNT)
|
||||
.where(ACCOUNT.ID.ge(num))
|
||||
.and(ACCOUNT.USER_NAME.like(userName));
|
||||
|
||||
// SQL:
|
||||
// SELECT * FROM tb_account
|
||||
// WHERE user_name LIKE '%michael%'
|
||||
```
|
||||
|
||||
|
||||
### where select
|
||||
@ -466,7 +492,7 @@ set user_name = ?, sex = ? where id = ?
|
||||
|
||||
## 自定义 TypeHandler
|
||||
|
||||
使用 @column 注解:
|
||||
使用 @Column 注解:
|
||||
|
||||
```java
|
||||
@Table("tb_account")
|
||||
@ -488,7 +514,6 @@ public class Account {
|
||||
}
|
||||
options.put(key, value);
|
||||
}
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user