sách gpt4 ăn đã đi

So sánh chức năng giữa Fluent Mybatis, Mybatis bản địa và Mybatis Plus

In lại Tác giả: qq735679552 Thời gian cập nhật: 27-09-2022 22:32:09 29 4
mua khóa gpt4 giày nike

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 các chức năng của Fluent Mybatis, Mybatis bản địa và Mybatis Plus được tác giả sưu tầm và biên soạn. Nếu bạn quan tâm tới bài viết này thì nhớ like nhé.

Sử dụng mybatis thông thạo, bạn không cần phải viết các tệp xml cụ thể. Bạn có thể xây dựng các câu lệnh sql kinh doanh phức tạp hơn thông qua api java để đạt được sự tích hợp giữa logic mã và logic sql. Không cần phải tập hợp các hoạt động truy vấn hoặc cập nhật trong Dao và tập hợp các tham số phụ trong xml hoặc trình ánh xạ. Vậy so với Mybatis bản địa, Mybatis Plus hoặc các framework khác, FluentMybatis mang lại những tiện ích gì?

Hãy thực hiện và so sánh thông qua một yêu cầu nghiệp vụ tương đối điển hình. Nếu có bảng điểm học sinh thì cấu trúc như sau.

tạo bảng `student_score`( id bigint auto_increment nhận xét "ID khóa chính" khóa chính, sinh viên_id bigint không null nhận xét "Mã sinh viên", giới tính_man tinyint mặc định 0 không null nhận xét "Giới tính, 0:Nữ; 1:Nam", school_term int null nhận xét "học kỳ", chủ đề varchar(30) null nhận xét "chủ đề", điểm int null nhận xét "điểm", gmt_create datetime không nhận xét null "Thời gian tạo bản ghi", gmt_modified datetime không null nhận xét "Ghi lại thời gian sửa đổi lần cuối", is_deleted tinyint mặc định 0 không null nhận xét "Nhận dạng xóa logic") engine = Bộ ký tự mặc định của InnoDB=utf8;

Hiện nay có một nhu cầu: thống kê về điểm đậu của ba môn học ('tiếng Anh', 'Toán', 'tiếng Trung') vào năm 2000 theo học kỳ, thống kê các môn học về điểm tối thiểu, điểm tối đa và điểm trung bình, và số lượng mẫu cần lớn hơn 1 thì kết quả thống kê như sau Đối với việc sắp xếp học kỳ và môn học, chúng ta có thể viết câu lệnh SQL như sau.

chọn school_term, subject, count(score) làm count, min(score) làm min_score, max(score) làm max_score, avg(score) làm max_scorefrom student_scorewhere school_term >= 2000 và môn học trong ("英语", "数学", "语文") và score >= 60 và is_deleted = 0group by school_term, subjecthaving count(score) > 1order by school_term, subject;

Các yêu cầu trên có thể đạt được bằng cách sử dụng Fluent Mybatis, Native Mybatis và Mybatis plus tương ứng.

  。

So sánh ba

  。

Sử dụng mybatis thông thạo để thực hiện các chức năng trên

So sánh chức năng giữa Fluent Mybatis, Mybatis bản địa và Mybatis Plus

mã cụ thể.

Chúng ta có thể thấy khả năng của api thông thạo và hiệu ứng hiển thị của IDE trên mã.

  。

Thay đổi sang mybatis bản địa để đạt được hiệu quả

Xác định giao diện Mapper.

giao diện công khai MyStudentScoreMapper { List<>> summaryScore(SummaryQuery paras);}

SummaryQuery, thực thể tham số cần thiết để xác định giao diện.

@Data@Accessors(chain = true)public class SummaryQuery { private Integer schoolTerm; private List các môn học; private Integer score; private Integer minCount;}

Xác định tệp xml của trình ánh xạ triển khai logic nghiệp vụ.

Triển khai giao diện nghiệp vụ (đây là lớp thử nghiệm, tương ứng với lớp Dao trong các ứng dụng thực tế).

@RunWith(SpringRunner.class)@SpringBootTest(classes = QuickStartApplication.class)public class MybatisDemo { @Autowired Private MyStudentScoreMapper mapper; @Test public void mybatis_demo() { // Xây dựng các tham số truy vấn SummaryQuery paras = new SummaryQuery() .setSchoolTerm(2000 ) .setSubjects(Arrays.asList("Tiếng Anh", "Toán học", "Tiếng Trung")) .setScore(60) .setMinCount(1); Danh sách<>> summary = mapper.summaryScore(paras); .out.println(tóm tắt);

Tóm lại, sử dụng trực tiếp mybatis thì các bước thực hiện còn khá rườm rà và hiệu quả quá thấp. Chuyển sang dùng mybatis plus có tác dụng gì?

  。

Thay đổi sang mybatis plus để đạt được hiệu quả

Việc triển khai mybatis plus đơn giản hơn nhiều so với mybatis và hiệu quả triển khai như sau.

So sánh chức năng giữa Fluent Mybatis, Mybatis bản địa và Mybatis Plus

Nhưng như được khoanh tròn màu đỏ, việc viết mybatis plus quá trình triển khai sử dụng nhiều chuỗi mã hóa cứng (bạn có thể sử dụng phương thức get lambda của Thực thể để thay thế một phần mã hóa chuỗi). Việc mã hóa cứng các chuỗi sẽ tạo ra rất nhiều rào cản cho các nhà phát triển khi sử dụng. Cá nhân tôi nghĩ có hai điểm chính:

  • Khó nhớ và gõ tên trường
  • Lỗi thời gian chạy sau khi thuộc tính Thực thể thay đổi sau trường cơ sở dữ liệu

Các framework khác, chẳng hạn như TkMybatis, yếu hơn mybatis plus về khả năng đóng gói và dễ sử dụng nên sẽ không thể so sánh được.

  。

Tạo so sánh mã hóa mã

  。

cài đặt mã được tạo thông thạo mybatis

lớp công khai AppEntityGenerator { Chuỗi cuối cùng tĩnh url = "jdbc:mysql://localhost:3306/fluent_mybatis_demo?useSSL=false&useUnicode=true&characterEncoding=utf-8"; public static void main(String[] args) { FileGenerator.build(Abc. class); } @Tables( /** Thông tin kết nối cơ sở dữ liệu**/ url = url, username = "root", mật khẩu = "mật khẩu", /** Đường dẫn gói cha của lớp thực thể**/ basePack = "cn.org.fluent.mybatis.springboot.demo", /** Thư mục nguồn mã thực thể**/ srcDir = " spring-boot-demo/src/main/java", /** Thư mục nguồn mã Dao**/ daoDir = "spring-boot-demo/src/main/java", /** Nếu bảng xác định việc tạo bản ghi, sửa đổi bản ghi và xóa logic các trường **/ gmtCreated = "gmt_create", gmtModified = "gmt_modified", logicDeleted = "is_deleted", /** Bảng nơi tệp cần được tạo (bảng tên: Tên thực thể tương ứng) **/ bảng = @Table(value = {"student_score"}) ) static class Abc { }}

  。

cài đặt tạo mã mybatis plus

lớp công khai CodeGenerator { Chuỗi tĩnh dbUrl = "jdbc:mysql://localhost:3306/fluent_mybatis_demo?useSSL=false&useUnicode=true&characterEncoding=utf-8"; @Test công khai void generateCode() { GlobalConfig config = new GlobalConfig(); DataSourceConfig dataSourceConfig = new DataSourceConfig(); dataSourceConfig.setDbType(DbType.MYSQL) .setUrl(dbUrl) .setUsername("root") .setPassword("password") .setDriverName(Driver.class.getName()); StrategyConfig strategyConfig = new StrategyConfig(); strategyConfig .setCapitalMode(true) .setEntityLombokModel(false) .setNaming(NamingStrategy.underline_to_camel) .setColumnNaming(NamingStrategy.underline_to_camel) .setEntityTableFieldAnnotationEnable(true) .setFieldPrefix(new String[]{"test_"}) .setInclude(new String[]{"student_score"}) .setLogicDeleteFieldName("đã_xóa") .setTableFillList(Arrays.asList(new TableFill("gmt_create", FieldFill.INSERT), new TableFill("gmt_modified", FieldFill.INSERT_UPDATE))); cấu hình .setActiveRecord(false) .setIdType(IdType.AUTO) .setOutputDir(System.getProperty("user.dir") + "/src/main/java/") .setFileOverride(true); AutoGenerator() mới.setGlobalConfig(cấu hình) .setDataSource(dataSourceConfig) .setStrategy(strategyConfig) .setPackageInfo(packageConfig() mới.setParent("com.mp.demo") .setController("controller") .setEntity("entity") ).execute(); }}

  。

Danh sách tính năng FluentMybatis

So sánh chức năng giữa Fluent Mybatis, Mybatis bản địa và Mybatis Plus

  。

Tóm tắt so sánh của ba

Sau khi đọc cách thực hiện cùng một điểm chức năng của ba khung, bạn chắc chắn sẽ có nhận định của riêng mình. Tác giả cũng đã tóm tắt một so sánh ở đây.

  。

- Mybatis cộng thêm Mybatis lưu loát
tạo mã Tạo Entity, Mapper, Wrapper và các tệp khác và Trình tạo rất dễ sử dụng Chỉ Thực thể được tạo và sau đó Mapper, Query, Update và SqlProvider được tạo thông qua quá trình biên dịch.
Mối quan hệ cộng sinh với Mybatis Cần thay thế SqlSessionFactoryBean ban đầu Không có sửa đổi nào đối với Mybatis. Làm thế nào để sử dụng nó như trước đây?
Phương pháp xây dựng SQL động Khi ứng dụng khởi động, các đoạn xml động được xây dựng dựa trên thông tin chú thích Thực thể và được đưa vào trình phân tích cú pháp Mybatis. Khi ứng dụng được biên dịch, theo chú thích Thực thể, hãy biên dịch và tạo SqlProvider của phương thức tương ứng, đồng thời sử dụng liên kết chú thích @InsertProvider @SelectProvider @UpdateProvider trên Mapper của mybatis
Các kết quả SQL động có dễ dàng được theo dõi GỠ LỖI không? Không dễ gỡ lỗi Thật dễ dàng, chỉ cần xác định vị trí phương thức SQLProvider và đặt điểm dừng
Cấu trúc SQL động Bằng cách mã hóa cứng tên trường hoặc sử dụng biểu thức lambda của phương thức get của Thực thể Tạo tên phương thức tương ứng thông qua quá trình biên dịch và gọi phương thức đó trực tiếp.
Phát hiện lỗi sau khi thay đổi trường Biểu thức lambda của phương thức get có thể được biên dịch và tìm thấy, nhưng không thể biên dịch và tìm thấy mã hóa trường. Nó có thể được tìm thấy tại thời gian biên dịch
Phương pháp xây dựng SQL động cho các trường khác nhau Thông qua các thông số giao diện Thông qua phương thức tên giao diện, hiệu quả mã hóa của FluentAPI cao hơn
Tính năng kết xuất cú pháp không có Các biến chính chọn, cập nhật, đặt và hoặc có thể được hiển thị bằng cú pháp IDE, làm cho nó dễ đọc hơn.

  。

  。

Giới thiệu và mã nguồn Fluent Mybatis

Tài liệu và ví dụ thông thạo Mybatis.

Mã nguồn Mybatis thông thạo, github.

Điều này kết thúc bài viết này về việc so sánh các chức năng của Fluent Mybatis, Mybatis bản địa và Mybatis Plus. Để biết thêm thông tin về Fluent Mybatis, Mybatis bản địa và Mybatis Plus, 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ất cả các bạn sẽ ủng hộ tôi trong tương lai! .

Liên kết gốc: https://juejin.cn/post/6886019929519177735.

Cuối cùng, bài viết so sánh chức năng của Fluent Mybatis, Mybatis bản địa và Mybatis Plus kết thúc tại đây. Nếu bạn muốn biết thêm về việc so sánh các chức năng của Fluent Mybatis, Mybatis bản địa và Mybatis Plus, vui lòng tìm kiếm CFSDN. Hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

29 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress