Quá trình và cách sử dụng chi tiết về cấu hình cốt lõi, bổ sung, xóa, sửa đổi khung công tác Java Mybatis
In lạiTác giả: qq735679552Thời gian cập nhật: 28-09-2022 22:32:09284
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 viết trên blog CFSDN này về việc bổ sung, xóa, sửa đổi và cấu hình cốt lõi của Java Mybatis framework, giải thích chi tiết quy trình và cách sử dụng được tác giả sưu tầm và biên soạn. Nếu bạn quan tâm đến bài viết này thì nhớ like nhé.
Hoạt động JDBC thô
Hoạt động jdbc gốc (dữ liệu truy vấn).
Hoạt động jdbc thô (chèn dữ liệu).
Phân tích các hoạt động jdbc ban đầu Các vấn đề tồn tại trong quá trình phát triển jdbc ban đầu như sau: ① Việc tạo và giải phóng các kết nối cơ sở dữ liệu thường xuyên gây lãng phí tài nguyên hệ thống và ảnh hưởng đến hiệu suất hệ thống ② Các câu lệnh SQL được mã hóa cứng trong mã, khiến mã trở nên khó khăn để duy trì và ứng dụng SQL thực tế có thể thay đổi rất nhiều. Những thay đổi về SQL đòi hỏi phải thay đổi mã java. ③Khi thực hiện các thao tác truy vấn, bạn cần đóng gói dữ liệu trong tập kết quả theo cách thủ công thành các thực thể. Trong quá trình thao tác chèn, bạn cần đặt thủ công dữ liệu thực thể vào vị trí giữ chỗ của câu lệnh SQL.
Các giải pháp được đưa ra để giải quyết các vấn đề trên: ① Sử dụng nhóm kết nối cơ sở dữ liệu để khởi tạo tài nguyên kết nối ② Trích xuất câu lệnh sql vào tệp cấu hình xml ③ Sử dụng các công nghệ cơ bản như phản chiếu và xem xét nội tâm để tự động ánh xạ các thực thể và bảng tới các thuộc tính và trường.
。
Giới thiệu về Mybatis
① Mybatis là một khung lớp bền vững tuyệt vời dựa trên Java. Nó đóng gói jdbc bên trong, do đó các nhà phát triển chỉ cần tập trung vào chính câu lệnh SQL mà không tốn năng lượng vào các quy trình phức tạp như tải trình điều khiển, tạo kết nối và tạo câu lệnh. ② Mybatis định cấu hình các câu lệnh khác nhau để được thực thi thông qua xml hoặc chú thích và tạo câu lệnh sql được thực thi cuối cùng thông qua ánh xạ giữa đối tượng java và các tham số động của sql trong câu lệnh. ③Cuối cùng, khung mybatis thực thi sql và ánh xạ kết quả tới một đối tượng java và trả về nó. Ý tưởng ORM được sử dụng để giải quyết vấn đề ánh xạ thực thể và cơ sở dữ liệu, đóng gói jdbc và che chắn các chi tiết truy cập cơ bản của api jdbc, để chúng ta có thể hoàn thành hoạt động liên tục của cơ sở dữ liệu mà không cần phải xử lý api jdbc.
Địa chỉ trang web chính thức của Mybatis: mybatis C MyBatis 3 | Giới thiệu.
。
Các bước phát triển Mybatis:
① Thêm tọa độ của MyBatis ② Tạo bảng dữ liệu người dùng ③ Ghi lớp thực thể Người dùng ④ Viết tệp ánh xạ UserMapper.xml ⑤ Viết tệp lõi SqlMapConfig.xml ⑥ Viết lớp kiểm tra.
①Thêm tọa độ MyBatis và các tọa độ liên quan khác.
public class User { private int id; private String username; private String password; //Phương thức get&set}
④Viết tệp ánh xạ UserMapper.xml.
⑤Viết tệp lõi Mybatis SqlMapConfig.xml.
⑥Viết các lớp kiểm tra.
@Test //Thao tác truy vấn public void test1() ném IOException { //Lấy tệp cấu hình lõi inputStream ResourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml"); //Lấy đối tượng nhà máy phiên SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder(). xây dựng (resourceAsStream); //Lấy đối tượng trả lời phiên SqlSession sqlSession = sqlSessionFactory.openSession(); //Thực thi các tham số thao tác: namespace+id List userList = sqlSession.selectList("userMapper.findAll"); //In dữ liệu System.out. println (danh sách người dùng); //Giải phóng tài nguyên sqlSession.close();
。
Tổng quan về tệp ánh xạ Mybatis
。
Thêm, xóa, sửa và kiểm tra hoạt động của Mybatis
①Mybatis chèn dữ liệu hoạt động.
Viết tệp ánh xạ UserMapper.
chèn vào giá trị người dùng (#{id},#{username},#{password})
Viết Mã người dùng để chèn thực thể.
@Test // Thao tác chèn public void test2() ném IOException { // Mô phỏng đối tượng người dùng User user = new User(); user.setUsername("xxx"); FileInputStream ResourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml"); //Lấy đối tượng nhà máy phiên SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); //Lấy đối tượng gọi lại phiên SqlSession sqlSession = sqlSessionFactory.openSession(true); //Các tham số thao tác thực thi: namespace+id sqlSession.insert("userMapper.save",user) ; // Giải phóng tài nguyên sqlSession.close(); }
Những điều cần lưu ý khi chèn:
Trong câu lệnh chèn, hãy sử dụng thẻ chèn. Trong tệp ánh xạ, hãy sử dụng thuộc tính kiểu tham số để chỉ định kiểu dữ liệu sẽ được chèn. Trong câu lệnh Sql, hãy sử dụng phương thức #{entity attribute name} để tham chiếu giá trị thuộc tính trong thực thể. .API được sử dụng cho thao tác chèn là sqlSession.insert("namespace.id", đối tượng thực thể); Thao tác chèn liên quan đến các thay đổi dữ liệu cơ sở dữ liệu, do đó, giao dịch cam kết được hiển thị bởi đối tượng sqlSession sẽ được sử dụng, tức là sqlSession.commit(. ).
②Hoạt động sửa đổi dữ liệu Mybatis.
Viết tệp ánh xạ UserMapper.
cập nhật người dùng đặt tên người dùng=#{username},mật khẩu=#{password} trong đó id=#{id}
Viết mã người dùng để sửa đổi các thực thể.
@Test //Sửa đổi thao tác public void test3() ném IOException { //Mô phỏng đối tượng người dùng User user = new User(); user.setUsername("lucy"); ); //Lấy tệp cấu hình lõi inputStream ResourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml"); //Lấy đối tượng nhà máy phiên SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); //Lấy đối tượng trả lời phiên SqlSession sqlSession = sqlSessionFactory.openSession(); //Thực thi các tham số hoạt động: namespace+id sqlSession.update("userMapper.update",user); //mybatis thực hiện các thao tác cập nhật để thực hiện các giao dịch vì mybatis không thực hiện các giao dịch theo mặc định sqlSession.commit(); // Giải phóng tài nguyên sqlSession.close();
Lưu ý về hoạt động sửa đổi:
Sửa đổi câu lệnh bằng thẻ cập nhật. API được sử dụng cho thao tác sửa đổi là sqlSession.update ("namespace.id", đối tượng thực thể),
③Hoạt động xóa dữ liệu Mybatis.
Viết tệp ánh xạ UserMapper.
xóa khỏi người dùng nơi id=#{abc}
Viết mã người dùng để xóa các thực thể.
@Test //Xóa thao tác public void test4() ném IOException { //Lấy tệp cấu hình lõi inputStream ResourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml"); //Lấy đối tượng nhà máy phiên SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder(). xây dựng (resourceAsStream); // Lấy đối tượng trả lời phiên SqlSession sqlSession = sqlSessionFactory.openSession(); // Tham số thao tác thực thi: namespace+id sqlSession.delete("userMapper.delete",8); //mybatis thực thi thao tác cập nhật và hoàn tất giao dịch sqlSession .commit() ; //Giải phóng tài nguyên sqlSession.close() }
Những điều cần lưu ý khi xóa:
Sử dụng thẻ xóa trong câu lệnh xóa. Sử dụng phương thức #{arbitrary string} để tham chiếu tham số đơn được truyền trong câu lệnh Sql. API được sử dụng cho thao tác xóa là sqlSession.delete("namespace.id", Object),
。
Tổng quan về các tệp cấu hình lõi MyBatis
Mối quan hệ phân cấp của tệp cấu hình lõi MyBatis
Phân tích cấu hình chung MyBatis
1. Cấu hình môi trường cơ sở dữ liệu thẻ môi trường, hỗ trợ cấu hình đa môi trường.
Trong số đó, có hai loại trình quản lý giao dịch: ①JDBC: Cấu hình này sử dụng trực tiếp cài đặt cam kết và khôi phục của JDBC và dựa vào kết nối thu được từ nguồn dữ liệu để quản lý phạm vi giao dịch. ② QUẢN LÝ: Cấu hình này hầu như không làm gì cả. Nó không bao giờ cam kết hoặc khôi phục kết nối mà cho phép vùng chứa quản lý toàn bộ vòng đời của giao dịch (chẳng hạn như bối cảnh của máy chủ ứng dụng JEE). Theo mặc định, nó sẽ đóng kết nối, tuy nhiên một số vùng chứa không muốn điều này, vì vậy bạn cần đặt thuộc tính closeConnection thành false để ngăn hành vi đóng mặc định của nó. Trong số đó, có ba loại nguồn dữ liệu: ①UNPOOLED: Việc triển khai nguồn dữ liệu này chỉ mở và đóng kết nối mỗi khi được yêu cầu. ②POOLED: Việc triển khai nguồn dữ liệu này sử dụng khái niệm "pool" để tổ chức các đối tượng kết nối JDBC. ③JNDI: Nguồn dữ liệu này được triển khai để sử dụng trong các vùng chứa như EJB hoặc máy chủ ứng dụng. Vùng chứa có thể định cấu hình nguồn dữ liệu ở trung tâm hoặc bên ngoài, sau đó đặt tham chiếu đến bối cảnh JNDI. Thẻ 2.mapper.
Chức năng của thẻ này là tải ánh xạ. Các phương thức tải như sau: ① Sử dụng các tham chiếu tài nguyên liên quan đến đường dẫn lớp, ví dụ: .
②Sử dụng công cụ định vị tài nguyên (URL) đủ điều kiện, ví dụ: .
③Sử dụng tên lớp đủ điều kiện của lớp triển khai giao diện ánh xạ, ví dụ: .
④Đăng ký tất cả các triển khai giao diện trình ánh xạ trong gói với tư cách là trình ánh xạ, ví dụ: .
3. Tab thuộc tính.
Thẻ 4.typeAliases.
Ở trên, chúng tôi đã tùy chỉnh các bí danh và khung mybatis đã đặt một số loại bí danh phổ biến cho chúng tôi.
。
API tương ứng của Mybatis
①SqlSession Factory Builder SqlSessionFactoryBuilder API thường được sử dụng: SqISessionFactory build(InputStream inputStream) Xây dựng đối tượng SqlSessionFactory bằng cách tải luồng đầu vào của tệp lõi của mybatis.
Trong số đó, lớp công cụ Tài nguyên nằm trong gói org.apache.ibatis.io. Lớp Tài nguyên giúp bạn tải các tệp tài nguyên từ đường dẫn lớp, hệ thống tệp hoặc URL web.
②Đối tượng nhà máy SqlSession SqlSessionFactory.
SqlSessionFactory có nhiều phương thức để tạo các phiên bản SqlSession. Hai cái sau đây thường được sử dụng
③Đối tượng phiên SqlSession.
Phiên bản SqISession là một lớp rất mạnh trong MyBatis. Tại đây, bạn sẽ thấy tất cả các phương thức để thực thi câu lệnh, thực hiện hoặc khôi phục các giao dịch và nhận các phiên bản của trình ánh xạ. Các phương pháp chính để thực hiện câu lệnh là
Các phương thức vận hành giao dịch chính là: ①void commit().
②tránh rollback() 。
Phần này kết thúc bài viết này về quy trình chi tiết và cách sử dụng các tính năng bổ sung, xóa, sửa đổi và cấu hình cốt lõi của khung công tác Java Mybatis. Để biết thêm nội dung Java 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 qua các bài viết liên quan sau đây. sẽ ủng hộ tôi trong tương lai! .
Liên kết gốc: https://blog.csdn.net/weixin_48838340/article/details/120929552.
Cuối cùng, bài viết này về quy trình chi tiết và cách sử dụng việc thêm, xóa, kiểm tra, sửa đổi và cấu hình cốt lõi của khung công tác Java Mybatis sẽ kết thúc tại đây. Nếu bạn muốn biết thêm về quy trình chi tiết và cách sử dụng việc thêm, xóa, kiểm tra, sửa đổi và cấu hình cốt lõi của khung công tác Java Mybatis, vui lòng tìm kiếm các bài viết 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! .
Đã đóng cửa. Câu hỏi này không tuân thủ nguyên tắc Stack Overflow. Câu trả lời không được chấp nhận vào thời điểm này. Các câu hỏi yêu cầu chúng tôi giới thiệu hoặc tìm các công cụ, thư viện hoặc tài nguyên bên ngoài trang web yêu thích đều không có chủ đề đối với Stack Overflow vì
Đầu tiên là một số thông tin cơ bản; chúng tôi đang phát triển kho dữ liệu và thực hiện một số nghiên cứu về những công cụ sẽ sử dụng cho quy trình ETL của mình. Nhóm rất tập trung vào nhà phát triển và mọi người đều quen thuộc với C#. Cho đến nay tôi đã xem RhinoETL, Pentaho (
Tôi cần quá trình này với quyền quản trị viên. Đánh giá từ câu hỏi và câu trả lời này, dường như không có cách nào tốt hơn là khởi chạy một quy trình riêng biệt. Vì tôi muốn có một quy trình dành riêng cho việc đó thay vì khởi chạy ứng dụng gốc của mình trong quy trình thứ hai chỉ dành cho phương pháp này - tôi nghĩ tôi sẽ làm điều đó trong VS201
Tôi đang phát triển một ứng dụng web dựa trên java yêu cầu tôi tạo sơ đồ trình tự bằng cách sử dụng đầu vào từ các thông báo SIP (giao thức khởi tạo phiên). Tôi phải thể hiện luồng cuộc gọi giữa các điện thoại khác nhau và máy chủ tương ứng. Tôi có thể sử dụng bất kỳ công việc nào
Tôi hơi bối rối về quy trình mTLS của istio. Trong ví dụ về bookinginfo, tôi thấy dịch vụ được gọi qua http thay vì https. Nếu có mTLS giữa các dịch vụ thì các dịch vụ đó có thực hiện cuộc gọi http không? Có thể được không
Thật khó để nói những gì đang được hỏi ở đây. Câu hỏi mơ hồ, mơ hồ, không đầy đủ, quá rộng hoặc hùng biện và không thể trả lời hợp lý ở dạng hiện tại. Để được trợ giúp làm rõ vấn đề này để bạn có thể mở lại, hãy truy cập trung tâm trợ giúp. Đã đóng
Tôi đã từng làm một trò chơi bài đơn giản trước đây và có những ý tưởng của riêng mình về quy trình tổng thể của chương trình. Mối quan tâm lớn nhất của tôi là kích hoạt thẻ. Giả sử chúng ta có một lá bài tên là "Guy" có tác dụng là "Bất cứ khi nào bạn chơi một lá bài khác, nhận được 2 mạng." Làm cách nào để kết hợp điều này vào mã của tôi?
Tôi có 4 hoạt động. A, B, C và D. Người dùng có thể bắt đầu bất kỳ Hoạt động nào từ mọi Hoạt động. Tức là Hoạt động A có 3 nút để bắt đầu B, C và D. theo cách tương tự
Tôi đã tạo một lớp bộ định tuyến đơn giản được đơn giản hóa trông như thế này // @flow import { Container } từ 'unstated' type State = { history: Objec
Tôi có hai Hoạt động, giả sử là A1 và A2. Thứ tự là A1->A2 Tôi bắt đầu từ A1 đến A2 mà không gọi kết thúc() trong A1. Tôi muốn kích hoạt chức năng ở A1 sau khi nhấn nút quay lại ở A2. Nhưng
Tôi đang cân nhắc sử dụng BPEL trong dự án tiếp theo của mình. Tôi đã dùng thử trình thiết kế Netbeans BPEL và tôi rất hài lòng với nó. Nhưng trước khi quyết định sử dụng BPEL, tôi muốn biết nó sẽ hoạt động tốt như thế nào đối với quá trình phát triển dựa trên thử nghiệm. Thật không may, tôi biết rất ít về chủ đề đó
Mình cần xếp hai bảng lên nhau, có nội dung trước và sau. Tôi không thể làm cho nội dung đằng sau nó trôi chảy đúng cách. Các bảng xếp chồng lên nhau có chiều cao thay đổi. Cấu trúc HTML: ... nội dung khác ...
Tôi mới sử dụng Hibernate. Tôi không thể hiểu được dòng chảy của Hibernate. Hãy làm rõ những nghi ngờ của tôi. Tôi có "HibernateUtil.java" và câu lệnh sau sessionFactory = new Anno
Chào buổi sáng, tôi bắt đầu sử dụng Ruby và muốn tạo một công cụ nhỏ để lấy IP công cộng của mình và gửi qua email. Tôi đang gặp vấn đề cơ bản với việc so sánh chuỗi và khối if/else mà tôi không thể xử lý được. Mã rất đơn giản (xem bên dưới)
Tôi hiện đang cố gắng thiết lập quy trình phát triển trong nhóm của mình và đọc về GitFlow. Có vẻ thú vị, nhưng tôi có thể phát hiện ra một số vấn đề. Giả sử tình huống sau: Chúng ta hoàn thành các hàm F1, F2 và F3 và hợp nhất chúng
Tôi đã sử dụng git flow được một thời gian. Tôi muốn hiểu một trường hợp sử dụng cụ thể. Đối với một trong những dự án của tôi, tôi đã có được một vé cho một tính năng mới của trang web. Trình tự công việc này phụ thuộc vào nhiều nhiệm vụ con. Tôi muốn tạo một nhánh tính năng cho vé chính và sau đó với mỗi nhiệm vụ phụ, hãy tạo một nhánh ngoài phụ huynh
Làm sao bạn biết rằng bạn đã tìm thấy và giải quyết được nhiều lỗi nhất có thể trong một chương trình? Cách đây vài năm tôi có đọc một tài liệu về gỡ lỗi (tôi tưởng đó là một loại tài liệu HOWTO nào đó). Trong số những thứ khác, tài liệu mô tả một kỹ thuật trong đó nhóm lập trình cố tình thêm lỗi vào mã và chuyển chúng cho QA
Tôi là một lập trình viên xuất sắc, rất giỏi!