Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
L
ldp-docs
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
doc
ldp-docs
Commits
d84b419c
Commit
d84b419c
authored
Jul 27, 2020
by
马超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 新增Hibernate条件查询文档
parent
1e3845d6
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
180 additions
and
2 deletions
+180
-2
基于LDP框架的应用开发文档.md
基于LDP框架的应用开发文档.md
+54
-1
Example样例工程开发文档.md
开发文档/Example样例工程开发文档.md
+24
-1
Hibernate条件查询工具类使用.md
开发文档/Hibernate条件查询工具类使用.md
+102
-0
No files found.
基于LDP框架的应用开发文档.md
View file @
d84b419c
...
...
@@ -1091,8 +1091,61 @@ public List<ExampleUserInfo> getUserListByJDBC(String sql, Map<String, Object> p
int executeTrans(LinkedList<TranscationQuery> listQuery);
</blockcode></pre>
</details>
#### 5.1.5 Hibernate查询扩展——复杂条件查询
#### 5.1.5 SQL查询扩展——条件IN和条件LIKE
Hibernate列表查询以及分页查询在普通的条件查询上做了扩展,可以Condition来做复杂的条件查询,需要使用 **HqlWhereHelper** 工具类来构建,条件的组合有以下几种:
1. **精确查询**(EQUAL、NOTEQUAL)
如果没有任何类型,则默认为EQUAL,也就是 “**等于**”,查询用户名称为张三的数据。
```java
LinkedList<Condition> conditions = HqlWhereHelper.getInstance.and("userName","张三").buildConditions();
//调用分页查询,传入Condition参数
genericDaoService.findPageByConditions(ExampleUserInfo.class, conditions, page.getPageIndex(), page.getPageSize());
```
如果需要其它类型,如NOTEQUAL( **不等于** ),需要显示的传递匹配类型,查询用户名称不等于张三的数据。
```java
HqlWhereHelper.getInstance.and("userName", "张三", FilterType.NOTEQUAL).buildConditions();
```
2. **模糊查询** (LIKE)
模糊查询所有用户名称带有张字的数据。
```java
HqlWhereHelper.getInstance.and("userName", "张", FilterType.LIKE).buildConditions();
```
3. **条件IN**
查询用户名称是张三或李四的数据。
```java
String[] names = new String[]{"张三", "李四"};
HqlWhereHelper.getInstance.and("userName", names, FilterType.IN).buildConditions();
```
4. **条件NOTIN**
查询姓名不是张三和李四的数据。
```java
String[] names = new String[]{"张三", "李四"};
HqlWhereHelper.getInstance.and("userName", names, FilterType.NOTIN).buildConditions();
```
5. **组合条件**
查询用户类型为应用类型、用户名称带有张字或者带有李字的数据。
```java
HqlWhereHelper.getInstance.and("userType", "0").and("userName", "张", FilterType.LIKE).or("name", "李",FilterType.LIKE);
```
#### 5.1.6 SQL查询扩展——条件IN和条件LIKE
1. **条件IN**
...
...
开发文档/Example样例工程开发文档.md
View file @
d84b419c
...
...
@@ -302,10 +302,33 @@ LDP框架支持两种操作方式,分别为Hibernate、JDBC。这两种操作
*
@return 影响行数
*
/
int executeTrans(LinkedList
<TranscationQuery>
listQuery);
/
**
*
hibernate 方式分页查询,带详细条件参数
*
*
@param clazz entity类型
*
@param conditions 条件参数
*
@param pageIndex 当前页
*
@param pageSize 页面数据量
*
@param orderColumns 排序字段
*
@return 分页数据
*
/
Pagination findPageByConditions(Class
<T>
clazz, LinkedList
<Condition>
conditions, Object pageIndex, Object pageSize, OrderColumn... orderColumns);
/
**
*
hibernate 方式查询,带详细条件参数
*
*
@param clazz entity类型
*
@param conditions 条件参数
*
@param orderColumns 排序字段
*
@return 数据集
*
/
List
<T>
findByConditions(Class
<T>
clazz,LinkedList
<Condition>
conditions, OrderColumn... orderColumns);
</pre>
</blockcode
>
</blockcode
</details>
#### 1.1.2 Hibernate调用示例
参照com.sinra.ldp.example.service.impl.ExampleServiceImpl.java,这里需要注意的是
**@AutoService**
注解,这个注解主要是在新增和更新时,对于实体类中配置了@AutoComputed字段根据规则进行自动填充。例如
...
...
开发文档/Hibernate条件查询工具类使用.md
0 → 100644
View file @
d84b419c
# Hibernate条件查询工具类使用
Hibernate 复杂查询需要依赖工具类——
**HqlWhereHelper**
,通过调用工具类
**buildConditions()**
方法,生成带顺序的条件列表
**LinkedList<Condition>**
,最终按顺序生成HQL语句。
**HqlWhereHelper**
调用示例:
```
java
LinkedList
<
Condition
>
conditions
=
HqlWhereHelper
.
getInstance
().
and
(
"key"
,
"value"
).
buildConditions
();
```
**HqlWhereHelper **
条件之间分为AND和OR,sql参数过滤方式
**FilterType**
又分为EQUAL、NOTEQUAL、LIKE、IN、NOTIN
|
**FilterType**
| 对应sql符号 |
| -------------- | ----------- |
| EQUAL | = |
| NOTEQUAL | != |
| LIKE | like |
| IN | in |
| NOTIN | not in |
**HqlWhereHelper **
条件组合的方法列表如下,所有的方法都可以重复调用并随意组合,第一个方法也可以随意调用,不会多生成一个and或者or:
```
java
/**
* 使用and拼接map中的参数,sql参数过滤方式为filterType
*
* @param paramMap 参数map
* @param filterType sql参数过滤方式
* @return
*/
public
HqlWhereHelper
andParamMap
(
Map
<
String
,
Object
>
paramMap
,
FilterType
filterType
);
/**
* 使用or拼接map中的参数,sql参数过滤方式为filterType
*
* @param paramMap 参数map
* @param filterType sql参数过滤方式
* @return
*/
public
HqlWhereHelper
orParamMap
(
Map
<
String
,
Object
>
paramMap
,
FilterType
filterType
);
/**
* 使用and拼接参数,默认过滤方式为FilterType.EQUAL
*
* @param key 参数key
* @param value 参数value
* @return
*/
public
HqlWhereHelper
and
(
String
key
,
Object
value
);
/**
* 使用or拼接参数,默认过滤方式为FilterType.EQUAL
*
* @param key 参数key
* @param value 参数value
* @return
*/
public
HqlWhereHelper
or
(
String
key
,
Object
value
);
/**
* 使用and拼接参数,过滤方式为FilterType.LIKE
*
* @param key 参数key
* @param value 参数value
* @return
*/
public
HqlWhereHelper
andLike
(
String
key
,
Object
value
);
/**
* 使用or拼接参数,过滤方式为FilterType.LIKE
*
* @param key 参数key
* @param value 参数value
* @return
*/
public
HqlWhereHelper
orLike
(
String
key
,
Object
value
);
/**
* 使用and拼接参数
*
* @param key 参数key
* @param value 参数value
* @param filterType 过滤方式
* @return
*/
public
HqlWhereHelper
and
(
String
key
,
Object
value
,
FilterType
filterType
);
/**
* 使用or拼接参数
*
* @param key 参数key
* @param value 参数value
* @param filterType 过滤方式
* @return
*/
public
HqlWhereHelper
or
(
String
key
,
Object
value
,
FilterType
filterType
);
```
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment