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 dựa trên một số kinh nghiệm (chia sẻ) về Mybaits maps do 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é.
Tôi đã sử dụng Hibernate trước đây và về cơ bản chưa bao giờ sử dụng Mybatis. Tôi cần tạo các mối quan hệ ánh xạ tại nơi làm việc.
Cả hai đều hỗ trợ một-một, một-nhiều và nhiều-nhiều. Chương này giới thiệu ngắn gọn cách sử dụng một-một và những điểm cần lưu ý.
Câu lệnh tạo bảng:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
TẠO BẢNG `bloc` (
`id` int(11) KHÔNG NULL tự động tăng,
`name` varchar(255) đối chiếu utf8_bin mặc định NULL,
`company_id` int(11) mặc định là NULL,
`intro` varchar(255) đối chiếu utf8_bin mặc định NULL,
KHÓA CHÍNH (`id`)
) ENGINE=InnoDB TỰ ĐỘNG_TĂNG=2 KÝ TỰ MẶC ĐỊNH=utf8 COLLATE=utf8_bin;
CHÈN VÀO`bloc` (`id`, `name`, `company_id`, `intro`) GIÁ TRỊ ('1', 'Tập đoàn Hongwei', '1', 'Tập đoàn đa quốc gia');
|
?
1
2
3
4
5
6
7
8
9
10
11
12
13
|
TẠO BẢNG `company` (
`id` int(11) KHÔNG NULL,
`name` varchar(255) đối chiếu utf8_bin mặc định NULL,
`intro` varchar(255) đối chiếu utf8_bin mặc định NULL,
KHÓA CHÍNH (`id`)
) ENGINE=InnoDB BỘ KÝ TỰ MẶC ĐỊNH=utf8 COLLATE=utf8_bin;
CHÈN VÀO công ty (`id`, `name`, `intro`) VALUES ('1', '', NULL);
|
Mẫu 1: Truy vấn con.
Mã JAVA: SqlSessionHelper.java.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
gói com.demo.mybatis;
nhập java.io.IOException;
nhập java.io.Reader;
nhập org.apache.ibatis.io.Resources;
nhập org.apache.ibatis.session.SqlSessionFactory;
nhập org.apache.ibatis.session.SqlSessionFactoryBuilder;
lớp công khai SqlSessionHelper {
public static SqlSessionFactory getSessionFactory() ném IOException{
SqlSessionFactory phiênFactory = null;
Người đọc reader = Resources.getResourceAsReader("configuration.xml");
thử{
sessionFactory = new SqlSessionFactoryBuilder().build(người đọc);;
}catch(Ngoại lệ ex){
ví dụ: printStackTrace();
}
trả về sessionFactory;
}
}
|
Kiểm tra.java
?
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
|
gói com.demo.mybatis;
nhập java.util.List;
nhập org.apache.ibatis.session.SqlSession;
nhập mapper.BlocMapper;
nhập mô hình.Bloc;
lớp công khai Kiểm tra {
/**
* @param lập luận
*/
public static void main(String[] args) {
thử{
SqlSession sqlSession = SqlSessionHelper.getSessionFactory().openSession();
BlocMapper blocMapper = sqlSession.getMapper(BlocMapper.class);
Danh sách<
Khối
> blocs = blocMapper.getBlocList("1");
for (Khối khối : khối) {
System.out.println("Tên công ty = "bloc.getCompany().getName());
}
}catch(Ngoại lệ ex){
System.out.println(ví dụ: getMessage());
}
}
}
|
người lập bản đồ
?
1
2
3
4
5
6
7
8
9
10
|
trình ánh xạ gói;
nhập java.util.List;
nhập mô hình.Bloc;
giao diện công khai BlocMapper {
Danh sách công khai<
Khối
> getBlocList(Tên chuỗi);
}
|
?
1
2
3
4
5
|
trình ánh xạ gói;
giao diện công cộng CompanyMapper {
}
|
người mẫu
?
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
37
38
39
40
41
42
43
44
45
46
|
mô hình gói;
lớp công khai Bloc {
số nguyên riêng tư id;
chuỗi tên riêng tư;
chuỗi riêng tư giới thiệu;
công ty tư nhân công ty;
công khai Integer getId() {
trả về id;
}
công khai void setId(Số nguyên id) {
id này = id;
}
công khai String getName() {
trả về tên;
}
public void setName(String name) {
this.name = tên;
}
công khai String getIntro() {
trở lại phần giới thiệu;
}
public void setIntro(String intro) {
this.intro = phần giới thiệu;
}
Công ty công cộng getCompany() {
công ty trả lại;
}
public void setCompany(Công ty công ty) {
this.company = công ty;
}
}
|
?
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
|
mô hình gói;
lớp công khai Công ty {
số nguyên riêng tư id;
chuỗi tên riêng tư;
private Integer giới thiệu;
công khai Integer getId() {
trả về id;
}
công khai void setId(Số nguyên id) {
id này = id;
}
công khai String getName() {
trả về tên;
}
public void setName(String name) {
this.name = tên;
}
Số nguyên công khai getIntro() {
trở lại phần giới thiệu;
}
public void setIntro(Số nguyên intro) {
this.intro = phần giới thiệu;
}
}
|
Cấu hình ánh xạ như sau: (Nếu có nhiều, hãy thay đổi "brandObject" thành liên kết thuộc tính Danh sách thực thể và thay đổi nó thành bộ sưu tập).
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
xml
phiên bản
=
"1.0"
mã hóa
=
"UTF-8"
?>
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<
người lập bản đồ
không gian tên
=
"mapper. CompanyMapper"
>
<
kết quảBản đồ
nhận dạng
=
"Bản đồ kết quả cơ sở"
kiểu
=
"mô hình.Công ty"
>
<
nhận dạng
cột
=
"nhận dạng"
tài sản
=
"nhận dạng"
Kiểu jdbc
=
"Số nguyên"
/>
<
kết quả
cột
=
"tên"
tài sản
=
"tên"
Kiểu jdbc
=
"VARCHAR"
/>
<
kết quả
cột
=
"giới thiệu"
tài sản
=
"giới thiệu"
Kiểu jdbc
=
"VARCHAR"
/>
kết quảBản đồ
>
<
lựa chọn
nhận dạng
=
"lấyThông Tin Công Ty"
Kiểu tham số
=
"Số nguyên"
kết quảBản đồ
=
"Bản đồ kết quả cơ sở"
>
chọn * từ công ty nơi id = #{id}
lựa chọn
>
người lập bản đồ
>
|
?
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<
người lập bản đồ
không gian tên
=
"mapper.BlocMapper"
>
<
kết quảBản đồ
nhận dạng
=
"Bản đồ kết quả cơ sở"
kiểu
=
"mô hình.Bloc"
>
<
nhận dạng
cột
=
"nhận dạng"
tài sản
=
"nhận dạng"
Kiểu jdbc
=
"Số nguyên"
/>
<
kết quả
cột
=
"tên"
tài sản
=
"tên"
Kiểu jdbc
=
"VARCHAR"
/>
<
kết quả
cột
=
"giới thiệu"
tài sản
=
"giới thiệu"
Kiểu jdbc
=
"VARCHAR"
/>
<
sự kết hợp
cột
=
"company_id"
tài sản
=
"công ty"
lựa chọn
=
"mapper.CompanyMapper.getCompanyInfo"
>
sự kết hợp
>
kết quảBản đồ
>
<
lựa chọn
nhận dạng
=
"lấy danh sách khối"
Kiểu tham số
=
"Sợi dây"
kết quảBản đồ
=
"Bản đồ kết quả cơ sở"
>
chọn * từ khối nơi tên = #{tên}
lựa chọn
>
người lập bản đồ
>
|
cột: trường trong thuộc tính bảng: tên trường trong thực thể chọn: một phương thức getCompanyInfo khác được giới thiệu bởi xxxMapper.xml.
Theo cách này, khi phát hiện một lựa chọn khi truy vấn ánh xạ, một phương thức truy vấn khác của Mapper mà bạn đã giới thiệu sẽ được thực thi. Điều kiện truy vấn là tham số company_id= của phương thức truy vấn.
Kết quả chạy.
Mẫu 2: Truy vấn liên quan.
Ánh xạ lớp kiểm tra thực thể cấu hình là như nhau
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
xml
phiên bản
=
"1.0"
mã hóa
=
"UTF-8"
?>
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<
người lập bản đồ
không gian tên
=
"mapper.BlocMapper"
>
<
kết quảBản đồ
nhận dạng
=
"Bản đồ kết quả cơ sở"
kiểu
=
"mô hình.Bloc"
>
<
nhận dạng
cột
=
"nhận dạng"
tài sản
=
"nhận dạng"
Kiểu jdbc
=
"Số nguyên"
/>
<
kết quả
cột
=
"tên"
tài sản
=
"tên"
Kiểu jdbc
=
"VARCHAR"
/>
<
kết quả
cột
=
"giới thiệu"
tài sản
=
"giới thiệu"
Kiểu jdbc
=
"VARCHAR"
/>
<
sự kết hợp
cột
=
"company_id"
tài sản
=
"công ty"
kết quảBản đồ
=
"mapper.CompanyMapper.BaseResultMap"
>
sự kết hợp
>
kết quảBản đồ
>
<
lựa chọn
nhận dạng
=
"lấy danh sách khối"
Kiểu tham số
=
"Sợi dây"
kết quảBản đồ
=
"Bản đồ kết quả cơ sở"
>
chọn * từ khối b bên trái tham gia công ty c trên b.company_id = c.id trong đó b.name = #{name}
lựa chọn
>
người lập bản đồ
>
|
cột: trường trong thuộc tính bảng: tên trường trong thực thể resultMap: giới thiệu ánh xạ của Trình ánh xạ khác.
Điều đáng lưu ý là vì là ánh xạ lồng nhau nên dạng thứ hai sẽ gây nhầm lẫn trong việc gán trường khi tên trường của hai thực thể giống nhau. Ví dụ: hai thực thể có tên. tên thực thể thứ hai có giá trị Khi tên thực thể không có giá trị, kết quả truy vấn là cả hai tên thực thể đều có giá trị và cả hai đều có cùng giá trị tên của thực thể đầu tiên.
Kết quả chạy là.
?
1
|
Tên công ty = Tập đoàn Hongwei
|
Rõ ràng kết quả chạy không như chúng ta mong muốn.
Demo đơn giản trên hy vọng sẽ giúp ích được cho người mới bắt đầu học giày trẻ em Mybatis! ! .
Kinh nghiệm nhỏ này (chia sẻ) dựa trên Mybaits maps là toàn bộ nội dung được editor chia sẻ, mong các bạn tham khảo và cũng mong các bạn ủng hộ mình.
Liên kết gốc: http://www.cnblogs.com/zhuxiansheng/p/7794292.html.
Cuối cùng, bài viết này về một số thông tin chi tiết (chia sẻ) dựa trên ánh xạ Mybaits kết thúc ở đây. Nếu bạn muốn biết thêm về một số thông tin chi tiết (chia sẻ) dựa trên ánh xạ Mybaits, vui lòng tìm kiếm các bài viết của CFSDN hoặc tiếp tục duyệt các bài viết liên quan. ủ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!