- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Fluent Mybatis实际开发中的优势对比由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
之前文章介绍过了Fluent基本框架等,其中有几个重要的方法用到了IQuery和IUpdate对象。 这2个对象是FluentMybatis实现复杂和动态sql的构造类,通过这2个对象fluent mybatis可以不用写具体的xml文件, 直接通过java api可以构造出比较复杂的业务sql语句,做到代码逻辑和sql逻辑的合一。下面接着介绍如何通过IQuery和IUpdate定义强大的动态SQL语句.
表结构 假如有学生成绩表结构如下
1
2
3
4
5
6
7
8
9
10
11
12
|
create
table
`student_score`
(
id
bigint
auto_increment comment
'主键ID'
primary
key
,
student_id
bigint
not
null
comment
'学号'
,
gender_man tinyint
default
0
not
null
comment
'性别, 0:女; 1:男'
,
school_term
int
null
comment
'学期'
,
subject
varchar
(30)
null
comment
'学科'
,
score
int
null
comment
'成绩'
,
gmt_create datetime
not
null
comment
'记录创建时间'
,
gmt_modified datetime
not
null
comment
'记录最后修改时间'
,
is_deleted tinyint
default
0
not
null
comment
'逻辑删除标识'
) engine = InnoDB
default
charset=utf8;
|
统计2000年到2019年, 三门学科(‘英语', ‘数学', ‘语文')分数按学期,学科统计最低分,最高分和平均分,统计结果按学期和学科排序 SQL:
1
2
3
4
5
6
7
|
select
school_term, subject,
count
(score),
min
(score),
max
(score),
avg
(score)
from
student_score
where
school_term
between
2000
and
2019
and
subject
in
(
'英语'
,
'数学'
,
'语文'
)
and
is_deleted = 0
group
by
school_term, subject
order
by
school_term, subject
|
1
2
3
4
5
6
7
8
9
|
@Data
public
class
ScoreStatistics {
private
int
schoolTerm;
private
String subject;
private
long
count;
private
Integer minScore;
private
Integer maxScore;
private
BigDecimal avgScore;
}
|
1
2
3
4
5
6
7
8
9
10
11
|
public
interface
StudentScoreDao
extends
IBaseDao<StudentScoreEntity> {
/**
* 统计从fromYear到endYear年间学科subjects的统计数据
*
* @param fromYear 统计年份区间开始
* @param endYear 统计年份区间结尾
* @param subjects 统计的学科列表
* @return 统计数据
*/
List<ScoreStatistics> statistics(
int
fromYear,
int
endYear, String[] subjects);
}
|
在StudentScoreDaoImpl上实现业务逻辑 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
@Repository
public
class
StudentScoreDaoImpl
extends
StudentScoreBaseDao
implements
StudentScoreDao {
@Override
public
List<ScoreStatistics> statistics(
int
fromSchoolTerm,
int
endSchoolTerm, String[] subjects) {
return
super
.listPoJos(ScoreStatistics.
class
,
super
.query()
.select.schoolTerm().subject()
.count(
"count"
)
.min.score(
"min_score"
)
.max.score(
"max_score"
)
.avg.score(
"avg_score"
)
.end()
.where.isDeleted().isFalse()
.and.schoolTerm().between(fromSchoolTerm, endSchoolTerm)
.and.subject().in(subjects)
.end()
.groupBy.schoolTerm().subject().end()
.orderBy.schoolTerm().asc().subject().asc().end()
);
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
|
@RunWith
(SpringRunner.
class
)
@SpringBootTest
(classes = QuickStartApplication.
class
)
public
class
StudentScoreDaoImplTest {
@Autowired
private
StudentScoreDao dao;
@Test
public
void
statistics() {
List<ScoreStatistics> list = dao.statistics(
2000
,
2019
,
new
String[]{
"语文"
,
"数学"
,
"英语"
});
System.out.println(list);
}
}
|
查看控制台输出结果:
DEBUG - ==> Preparing: SELECT school_term, subject, count(*) AS count, MIN(score) AS min_score, MAX(score) AS max_score, AVG(score) AS avg_score FROM student_score WHERE is_deleted = ? AND school_term BETWEEN ? AND ? AND subject IN (?, ?, ?) GROUP BY school_term, subject ORDER BY school_term ASC, subject ASC DEBUG - ==> Parameters: false(Boolean), 2000(Integer), 2019(Integer), 语文(String), 数学(String), 英语(String) DEBUG - <== Total: 30 [ScoreStatistics(schoolTerm=2000, subject=数学, count=17, minScore=1, maxScore=93, avgScore=36.0588), ... ScoreStatistics(schoolTerm=2009, subject=语文, count=24, minScore=3, maxScore=100, avgScore=51.2500)] 。
到此这篇关于Fluent Mybatis实际开发中的优势的文章就介绍到这了,更多相关Fluent Mybatis开发内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://blog.csdn.net/qq_27933251/article/details/115378245 。
最后此篇关于Fluent Mybatis实际开发中的优势对比的文章就讲到这里了,如果你想了解更多关于Fluent Mybatis实际开发中的优势对比的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
首先对WCF与WebService的定义进行概括,接着介绍了WCF的优势,最后就是对WCF与WebService两者的根本区别进行比较,具体内容如下 1、定义 1.WebService:严格来
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 5年前关闭。 Improve t
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 8 年前。 Improve
谁能告诉我将下一个脚本标记放在 元素之后和将它放在 元素之前有什么好处? (function (){ var script = document.createElement("script"); s
我最近遇到了一个 JavaScript 脚本,其中作者似乎试图避免在代码中使用字符串并将所有内容都分配给一个变量。 所以代替 document.addEventListener('click', (e
Scott Meyers 在“Effective Modern C++”中说表达式 Matrix sum = m1 + m2 + m3 + m4 (其中所有对象的类型均为 Matrix)“如果 ope
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
免责声明:我是网络开发的新手,所以请多多包涵... 堆栈:Angular 前端,后端的 Tornado(基于 python)网络服务器 我一直在使用 RxJs 和 WebSocket 成功地与后端通信
我一直在调查我的 Flutter 应用程序的 JSON 解析,并且有一个关于我无法解决的工厂构造函数的问题。我试图了解使用工厂构造函数与普通构造函数的优势。例如,我看到很多 JSON 解析示例,它们使
添加 SQL 后尝试打开 TadsQuery 时出现 5400 AE_INTERNAL_ERROR。当我将相同的 SQL 直接放在 TadsQuery 中时,没有错误。您的帮助文件指示我联系 Adva
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 8年前关闭。 Improve this
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improv
我想定义一个函数,当给定一个整数时,它将返回一个字符串。像这样: # Pseudocode function get_string(i) return my_string_array[i] end
我曾尝试在 Linux 和 Windows 上使用 DBD::Advantage,但没有成功。 Windows 版本附带了一个看似完整的安装程序,但它留下了 DBD-Advantage-8.10.ta
为什么说 NoSQL 在结构上比某些 SQL 数据库更快?假设我在某个 SQL 表的列上添加了一些索引。有人可以提供某种更快的查询吗? 我正在阅读有关 redis 的内容。 class User <
我的问题很简单:如果接口(interface)由单个类实现,那么使用接口(interface)有什么好处吗? 我一直认为只有当该接口(interface)有多个实现时,接口(interface)才是好
考虑这些(或多或少)等价的类型签名: f1 :: [a] -> Int -> a f2 :: Integral b => [a] -> b -> a f2 比 f1 更通用,这是一个很大的优势,但是
我们在 Scala 中部分应用了函数- def sum(a:Int,b:Int,c:Int) = a+b+c val partial1 = sum(1,_:Int,8) 我想知道使用部分应用函数的优点
你看下面的代码,我是如何使用 session 变量的;所以这三个问题是: 它们存放在哪里? (服务器或客户端) 它们对于每个网页访问者来说都是独一无二的吗? 我可以在完成工作后使用 ajax 或简单的
我知道这是一个常见问题,互联网上有关于此主题的资源,但我想从这个社区了解每个人在部署博客时对子域与子文件夹的想法(SEO 优势)。 谢谢。 最佳答案 我研究过一次,根据社区反馈以及权衡利弊,我会说去一
我是一名优秀的程序员,十分优秀!