CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.
Bài blog CFSDN này so sánh những ưu điểm của Fluent Mybatis trong thực tế phát triển, được tác giả sưu tầm và biên soạn. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.
Bài viết trước đã giới thiệu framework cơ bản của Fluent, trong đó một số phương thức quan trọng sử dụng các đối tượng IQuery và IUpdate. Hai đối tượng này là các lớp xây dựng của FluentMybatis để triển khai SQL phức tạp và động. Thông qua hai đối tượng này, FluentMybatis có thể xây dựng các câu lệnh SQL kinh doanh phức tạp hơn trực tiếp thông qua API Java mà không cần ghi các tệp XML cụ thể, để đạt được logic mã và SQL. đoàn kết. Tiếp theo, chúng tôi sẽ giới thiệu cách xác định các câu lệnh SQL động mạnh mẽ thông qua IQuery và IUpdate.
Cấu trúc bảng Giả sử có một bảng điểm học sinh có cấu trúc như sau:
?
1
2
3
4
5
6
7
8
9
10
11
12
|
tạo nên
bàn
`điểm_sinh_viên`
(
nhận dạng
bigint
bình luận auto_increment
'ID khóa chính'
sơ đẳng
chìa khóa
,
Mã sinh viên
bigint
không
vô giá trị
bình luận
'Mã số sinh viên'
,
giới tính_man nhỏ xíu
mặc định
0
không
vô giá trị
bình luận
'Giới tính, 0:Nữ; 1:Nam'
,
học kỳ
số nguyên
vô giá trị
bình luận
'học kỳ'
,
chủ thể
varchar
(30)
vô giá trị
bình luận
'kỷ luật'
,
điểm
số nguyên
vô giá trị
bình luận
'điểm'
,
gmt_create ngày giờ
không
vô giá trị
bình luận
'Kỷ lục thời gian tạo'
,
gmt_modified ngày giờ
không
vô giá trị
bình luận
'Ghi lại thời gian sửa đổi lần cuối'
,
is_deleted nhỏ
mặc định
0
không
vô giá trị
bình luận
'ID bia mộ'
) công cụ = InnoDB
mặc định
bộ ký tự=utf8;
|
Thống kê từ năm 2000 đến năm 2019, điểm của ba môn học ('Tiếng Anh', 'Toán', 'Tiếng Trung') được tính theo học kỳ và thống kê các môn học gồm điểm thấp nhất, điểm cao nhất và điểm trung bình. sắp xếp theo học kỳ và môn học SQL:
?
1
2
3
4
5
6
7
|
lựa chọn
học_kỳ, môn học,
đếm
(điểm),
phút
(điểm),
tối đa
(điểm),
trung bình
(điểm)
từ
điểm_sinh_viên
Ở đâu
học kỳ
giữa
2000
Và
2019
Và
chủ thể
TRONG
(
'Tiếng Anh'
,
'toán học'
,
'Trung Quốc'
)
Và
đã xóa = 0
nhóm
qua
học_kỳ, môn học
đặt hàng
qua
học_kỳ, môn học
|
- Được triển khai cụ thể thông qua FluentMybatis
- Xác định giao diện trên lớp Sinh viênScoreDao
?
1
2
3
4
5
6
7
8
9
|
@Dữ liệu
công cộng
lớp học
Điểm số thống kê {
riêng tư
số nguyên
học kỳ;
riêng tư
Chủ ngữ chuỗi;
riêng tư
dài
đếm;
riêng tư
Số nguyên minScore;
riêng tư
Số nguyên maxScore;
riêng tư
Điểm trung bình BigDecimal;
}
|
?
1
2
3
4
5
6
7
8
9
10
11
|
công cộng
giao diện
Điểm Sinh Viên
mở rộng
IBaseDao { |
/**
* Thống kê các môn học từ đầu năm đến cuối năm.
*
* @param fromYear Ngày bắt đầu của phạm vi năm thống kê
* @param endYear Thời điểm cuối năm thống kê
* Danh sách đối tượng @param của đối tượng thống kê
* Thống kê @return
*/
Liệt kê thống kê(
số nguyên
từNăm,
số nguyên
endYear, String[] chủ đề);
}
|
Triển khai logic nghiệp vụ trên Sinh viênScoreDaoImpl.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
@Kho lưu trữ
công cộng
lớp học
StudentScoreDaoImpl
mở rộng
StudentScoreBaseDao
thực hiện
Điểm Sinh ViênDao {
@Ghi đè
công cộng
Liệt kê thống kê(
số nguyên
từTrường học,
số nguyên
endSchoolTerm, String[] chủ đề) {
trở lại
siêu
.listPoJos(Điểm số thống kê.
lớp học
,
siêu
.truy vấn()
.select.schoolTerm().subject()
.đếm(
"đếm"
)
.điểm.tối.thiểu(
"điểm_tối_thiểu"
)
.điểm.tối.đa(
"điểm_tối_đa"
)
.điểm.trung.bình(
"điểm_trung_bình"
)
.kết thúc()
.nơi.isDeleted().isFalse()
.and.schoolTerm().between(fromSchoolTerm, endSchoolTerm)
.and.subject().in(chủ đề)
.kết thúc()
.groupBy.schoolTerm().subject().end()
.orderBy.schoolTerm().asc().subject().asc().end()
);
}
}
|
- Trong quá trình triển khai DaoImpl, ngoài việc trả về kết quả thống kê theo điều kiện, kết quả còn được tự động chuyển đổi thành đối tượng ScoreStatistics và trả về theo quy tắc gạch chân sang trường hợp lạc đà.
- Bài kiểm tra
?
1
2
3
4
5
6
7
8
9
10
11
12
|
@ChạyVới
(SpringRunner.
lớp học
)
@SpringBootTest
(lớp = QuickStartApplication.
lớp học
)
công cộng
lớp học
Điểm Sinh ViênDaoImplTest {
@Autowired
riêng tư
StudentScoreDao dao;
@Bài kiểm tra
công cộng
vô hiệu
thống kê() {
Danh sách danh sách = dao.statistics(
2000
,
2019
,
mới
Sợi dây[]{
"Trung Quốc"
,
"toán học"
,
"Tiếng Anh"
});
System.out.println(danh sách);
}
}
|
Xem đầu ra của bàn điều khiển:
DEBUG - ==> Đang chuẩn bị: 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 - <== Tổng cộng: 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)] 。
Đến đây là kết thúc bài viết về những ưu điểm của Fluent Mybatis trong quá trình phát triển thực tế. Để biết thêm nội dung phát triển Fluent Mybatis có liên quan, vui lòng tìm kiếm các bài viết trước của tôi hoặc tiếp tục duyệt các bài viết liên quan bên dưới. Tôi hy vọng bạn sẽ ủng hộ tôi trong tương lai! .
Liên kết gốc: https://blog.csdn.net/qq_27933251/article/details/115378245.
Cuối cùng, bài viết so sánh lợi thế trong quá trình phát triển thực tế của Fluent Mybatis kết thúc tại đây. Nếu bạn muốn biết thêm về so sánh lợi thế trong quá trình phát triển thực tế của Fluent Mybatis, vui lòng tìm kiếm bài viết CFSDN hoặc tiếp tục duyệt qua các bài viết liên quan. Tôi hy vọng tất cả các bạn ủng hộ blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!