# 数据库
基本增删改查, JFinal提供了两种方式对数据库进行操作,他们分别是:
- Db+Record 模式
- SQL 模板模式
- Model 映射模式
- Columns 查询模式
# Db+Record 模式
请参考jfinal的Db+Record模式 (opens new window)
# SQL 模板模式
通过创建*.stl
来创建SQL模板
文件,jweb会自动查找加载*.stl
文件,无需配置
创建User.stl
模板文件:
#namespace("cc.jweb.demo.web.user")
#sql("queryPageList")
select
t.user_id,
t.org_id,
t.user_name,
from user t
where 1=1
#if(notBlank(user_id))
and t.user_id = #para(user_id)
#end
#if(notBlank(org_id))
and t.org_id = #para(org_id)
#end
#if(notBlank(user_name))
and t.user_name = #para(user_name)
#end
order by t.create_datetime desc
limit #para(start),#para(limit)
#end
#sql("count")
select
count(1)
from sys_user t where 1=1
#if(notBlank(user_id))
and t.user_id = #para(user_id)
#end
#if(notBlank(org_id))
and t.org_id = #para(org_id)
#end
#if(notBlank(user_name))
and t.user_name = #para(user_name)
#end
#end
#end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
可通过如下代码,完成sql的执行
import cc.jweb.boot.db.Db;
import cc.jweb.boot.common.lang.Result;
...
List<Record> list = Db.find(Db.getSqlPara("cc.jweb.demo.web.user.queryPageList", params));
Result result = Db.paginate("cc.jweb.demo.web.user.queryPageList", "cc.jweb.demo.web.user.count", params)
1
2
3
4
5
6
7
2
3
4
5
6
7
详细使用方法,请前往
# Model 映射模式
Model是 MVC 模式中的 M 部分。以下是 Model 定义示例代码:
@Table(tableName = "user", primaryKey = "user_id")
public class User extends JbootModel<User> implements IBean {
User dao = new User().dao();
}
1
2
3
4
2
3
4
然后就可以操作user表了:
以下为Model的一些常见用法:
// 创建title属性为James,age属性为25的User对象并添加到数据库
new User().set("title", "James").set("age", 25).save();
// 删除id值为25的User
User.dao.deleteById(25);
// 查询id值为25的User将其title属性改为James并更新到数据库
User.dao.findById(25).set("title", "James").update();
// 查询id值为25的user, 且仅仅取title与age两个字段的值
User user = User.dao.findByIdLoadColumns(25, "title, age");
// 获取user的title属性
String userName = user.getStr("title");
// 获取user的age属性
Integer userAge = user.getInt("age");
// 查询所有年龄大于18岁的user
List<User> users = User.dao.find("select * from user where age>18");
// 分页查询年龄大于18的user,当前页号为1,每页10个user
Page<User> userPage = User.dao.paginate(1, 10, "select *", "from user where age > ?", 18);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
详细使用方法,请前往
# Columns 查询模式
参考 jboot的Column查询 (opens new window)
# 多数据源
参考Jboot的数据库多数据源配置 (opens new window)
# 读写分离
参考Jboot的读写分离配置 (opens new window)
# 分库分表
参考Jboot的分库分表配置 (opens new window)
# 分布式事务
参考Jboot的分布式事务配置 (opens new window)
引用
本节引用Jboot的数据库文档,详细可以前往 http://jboot.io/docs/db.html (opens new window)。