├── .gitignore
├── README.md
├── database
├── task.sql
└── user.sql
├── pic
└── book_info.jpg
├── 示例1
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── yeecode
│ │ │ └── mybatisdemo
│ │ │ ├── DemoApplication.java
│ │ │ └── model
│ │ │ └── User.java
│ └── resources
│ │ └── application.properties
│ └── test
│ └── java
│ └── com
│ └── github
│ └── yeecode
│ └── mybatisdemo
│ └── DemoApplicationTests.java
├── 示例10
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ ├── DemoApplication.java
│ │ └── User.java
│ └── resources
│ ├── application.properties
│ └── info.xml
├── 示例11
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── yeecode
│ │ │ └── mybatisdemo
│ │ │ ├── DemoApplication.java
│ │ │ └── model
│ │ │ ├── Bag.java
│ │ │ ├── Book.java
│ │ │ ├── Boy.java
│ │ │ ├── Girl.java
│ │ │ └── User.java
│ └── resources
│ │ ├── application.properties
│ │ ├── com
│ │ └── github
│ │ │ └── yeecode
│ │ │ └── mybatisdemo
│ │ │ └── UserDao.xml
│ │ └── mybatis-config.xml
│ └── test
│ └── java
│ └── com
│ └── github
│ └── yeecode
│ └── mybatisdemo
│ └── DemoApplicationTests.java
├── 示例12
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ ├── DemoApplication.java
│ │ ├── builder
│ │ ├── GardenSchoolUserBuilder.java
│ │ ├── SunnySchoolUserBuilder.java
│ │ └── UserBuilder.java
│ │ └── model
│ │ └── User.java
│ └── resources
│ └── application.properties
├── 示例13
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── yeecode
│ │ │ └── mybatisdemo
│ │ │ ├── DemoApplication.java
│ │ │ └── model
│ │ │ ├── Boy.java
│ │ │ ├── Girl.java
│ │ │ └── User.java
│ └── resources
│ │ ├── application.properties
│ │ ├── com
│ │ └── github
│ │ │ └── yeecode
│ │ │ └── mybatisdemo
│ │ │ └── UserDao.xml
│ │ └── mybatis-config.xml
│ └── test
│ └── java
│ └── com
│ └── github
│ └── yeecode
│ └── mybatisdemo
│ └── DemoApplicationTests.java
├── 示例14
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── yeecode
│ │ │ └── mybatisdemo
│ │ │ ├── DemoApplication.java
│ │ │ ├── controller
│ │ │ └── UserController.java
│ │ │ ├── dao
│ │ │ └── UserDao.java
│ │ │ ├── model
│ │ │ └── User.java
│ │ │ └── provider
│ │ │ └── UserProvider.java
│ └── resources
│ │ ├── application.properties
│ │ └── mybatis-config.xml
│ └── test
│ └── java
│ └── com
│ └── github
│ └── yeecode
│ └── mybatisdemo
│ └── DemoApplicationTests.java
├── 示例15
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ ├── DemoApplication.java
│ │ └── model
│ │ └── User.java
│ └── resources
│ └── application.properties
├── 示例16
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ ├── DemoApplication.java
│ │ └── model
│ │ └── User.java
│ └── resources
│ ├── application.properties
│ ├── demoScript.sql
│ └── mybatis-config.xml
├── 示例17
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ ├── DemoApplication.java
│ │ └── User.java
│ └── resources
│ └── application.properties
├── 示例18
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ ├── DemoApplication.java
│ │ ├── UserMapper.java
│ │ └── model
│ │ └── User.java
│ └── resources
│ ├── application.properties
│ ├── com
│ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ └── UserMapper.xml
│ └── mybatis-config.xml
├── 示例19
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ ├── DemoApplication.java
│ │ └── model
│ │ ├── ProxyHandler.java
│ │ └── User.java
│ └── resources
│ └── application.properties
├── 示例2
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── yeecode
│ │ │ └── mybatisdemo
│ │ │ ├── MainController.java
│ │ │ ├── MybatisdemoApplication.java
│ │ │ ├── User.java
│ │ │ └── UserMapper.java
│ └── resources
│ │ ├── application.properties
│ │ └── com
│ │ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ └── UserMapper.xml
│ └── test
│ └── java
│ └── com
│ └── github
│ └── yeecode
│ └── mybatisdemo
│ └── MybatisdemoApplicationTests.java
├── 示例20
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ └── DemoApplication.java
│ └── resources
│ └── application.properties
├── 示例21
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ ├── DemoApplication.java
│ │ └── model
│ │ ├── UserModel01.java
│ │ ├── UserModel02.java
│ │ ├── UserModel03.java
│ │ ├── UserModel04.java
│ │ └── UserModel05.java
│ └── resources
│ └── application.properties
├── 示例22
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ └── DemoApplication.java
│ └── resources
│ └── application.properties
├── 示例23
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ ├── DemoApplication.java
│ │ └── model
│ │ └── User.java
│ └── resources
│ ├── application.properties
│ ├── com
│ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ └── UserDao.xml
│ └── mybatis-config.xml
├── 示例24
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ ├── DemoApplication.java
│ │ └── model
│ │ ├── Task.java
│ │ └── User.java
│ └── resources
│ ├── application.properties
│ ├── com
│ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ └── UserDao.xml
│ └── mybatis-config.xml
├── 示例25
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── yeecode
│ │ │ └── mybatisdemo
│ │ │ ├── DemoApplication.java
│ │ │ └── model
│ │ │ └── User.java
│ └── resources
│ │ ├── application.properties
│ │ ├── com
│ │ └── github
│ │ │ └── yeecode
│ │ │ └── mybatisdemo
│ │ │ └── UserMapper.xml
│ │ └── mybatis-config.xml
│ └── test
│ └── java
│ └── com
│ └── github
│ └── yeecode
│ └── mybatisdemo
│ └── DemoApplicationTests.java
├── 示例26
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── yeecode
│ │ │ └── mybatisdemo
│ │ │ ├── DemoApplication.java
│ │ │ └── model
│ │ │ ├── Task.java
│ │ │ └── User.java
│ └── resources
│ │ ├── application.properties
│ │ ├── com
│ │ └── github
│ │ │ └── yeecode
│ │ │ └── mybatisdemo
│ │ │ ├── Dao01.xml
│ │ │ └── Dao02.xml
│ │ └── mybatis-config.xml
│ └── test
│ └── java
│ └── com
│ └── github
│ └── yeecode
│ └── mybatisdemo
│ └── DemoApplicationTests.java
├── 示例27
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ ├── DemoApplication.java
│ │ ├── model
│ │ └── Performer.java
│ │ └── processor
│ │ ├── ContactOfficer.java
│ │ ├── Handler.java
│ │ ├── MailSender.java
│ │ └── MaterialManager.java
│ └── resources
│ └── application.properties
├── 示例28
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ ├── DemoApplication.java
│ │ ├── model
│ │ └── User.java
│ │ └── plugin
│ │ └── YeecodeInterceptor.java
│ └── resources
│ ├── application.properties
│ ├── com
│ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ └── UserMapper.xml
│ └── mybatis-config.xml
├── 示例29
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ └── DemoApplication.java
│ └── resources
│ └── application.properties
├── 示例3
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ ├── DemoApplication.java
│ │ ├── User.java
│ │ └── UserMapper.java
│ └── resources
│ ├── application.properties
│ ├── com
│ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ └── UserMapper.xml
│ └── mybatis-config.xml
├── 示例4
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ ├── DemoApplication.java
│ │ ├── Phone.java
│ │ ├── PhoneMessageDecorator.java
│ │ ├── PhoneRecordDecorator.java
│ │ └── TelePhone.java
│ └── resources
│ └── application.properties
├── 示例5
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ ├── Book.java
│ │ ├── DemoApplication.java
│ │ └── User.java
│ └── resources
│ ├── application.properties
│ └── com
│ └── github
│ └── yeecode
│ └── mybatisdemo
│ └── UserMapper.xml
├── 示例6
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ ├── DemoApplication.java
│ │ ├── Student.java
│ │ ├── User.java
│ │ └── UserMapper.java
│ └── resources
│ ├── application.properties
│ ├── com
│ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ └── UserMapper.xml
│ └── mybatis-config.xml
├── 示例7
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── yeecode
│ │ │ └── mybatisdemo
│ │ │ ├── DemoApplication.java
│ │ │ └── model
│ │ │ ├── Cleaning.java
│ │ │ ├── WipeBlackboard.java
│ │ │ └── WipeGlass.java
│ └── resources
│ │ └── application.properties
│ └── test
│ └── java
│ └── com
│ └── github
│ └── yeecode
│ └── mybatisdemo
│ └── DemoApplicationTests.java
├── 示例8
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── github
│ │ │ └── yeecode
│ │ │ └── mybatisdemo
│ │ │ ├── DemoApplication.java
│ │ │ └── model
│ │ │ ├── User.java
│ │ │ ├── UserInterface.java
│ │ │ └── UserProxy.java
│ └── resources
│ │ └── application.properties
│ └── test
│ └── java
│ └── com
│ └── github
│ └── yeecode
│ └── mybatisdemo
│ └── DemoApplicationTests.java
└── 示例9
├── pom.xml
└── src
├── main
├── java
│ └── com
│ │ └── github
│ │ └── yeecode
│ │ └── mybatisdemo
│ │ ├── DemoApplication.java
│ │ └── model
│ │ ├── ProxyHandler.java
│ │ ├── User.java
│ │ └── UserInterface.java
└── resources
│ └── application.properties
└── test
└── java
└── com
└── github
└── yeecode
└── mybatisdemo
└── DemoApplicationTests.java
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | .vscode
3 | .settings
4 | .mvn
5 | .classpath
6 | .project
7 | target
8 | out
9 | *.iml
10 | *.rar
11 | *.7z
12 | *.tempdata
13 |
--------------------------------------------------------------------------------
/database/task.sql:
--------------------------------------------------------------------------------
1 | -- ----------------------------
2 | -- Table structure for task
3 | -- ----------------------------
4 | DROP TABLE IF EXISTS `task`;
5 | CREATE TABLE `task` (
6 | `id` int(11) NOT NULL AUTO_INCREMENT,
7 | `userId` int(11) NOT NULL,
8 | `taskName` varchar(255) NOT NULL,
9 | PRIMARY KEY (`id`)
10 | ) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8mb4;
11 |
12 | -- ----------------------------
13 | -- Records of task
14 | -- ----------------------------
15 | INSERT INTO `task` VALUES ('1', '1', 'Clean classroom.');
16 | INSERT INTO `task` VALUES ('2', '1', 'Open the door.');
17 | INSERT INTO `task` VALUES ('3', '2', 'Open windows.');
18 | INSERT INTO `task` VALUES ('4', '3', 'Clean the blackboard.');
19 | INSERT INTO `task` VALUES ('5', '2', 'Buy some boos.');
20 | INSERT INTO `task` VALUES ('6', '3', 'Buy some pens.');
21 | INSERT INTO `task` VALUES ('7', '4', 'Buy some flowers.');
--------------------------------------------------------------------------------
/database/user.sql:
--------------------------------------------------------------------------------
1 | -- ----------------------------
2 | -- Table structure for user
3 | -- ----------------------------
4 | DROP TABLE IF EXISTS `user`;
5 | CREATE TABLE `user` (
6 | `id` int(11) NOT NULL AUTO_INCREMENT,
7 | `name` varchar(255) NOT NULL,
8 | `email` varchar(255) DEFAULT NULL,
9 | `age` int(11) DEFAULT NULL,
10 | `sex` int(255) DEFAULT NULL,
11 | `schoolName` varchar(255) DEFAULT NULL,
12 | PRIMARY KEY (`id`)
13 | ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4;
14 |
15 | -- ----------------------------
16 | -- Records of user
17 | -- ----------------------------
18 | INSERT INTO `user` VALUES ('1', '易哥', 'yeecode@sample.com', '18', '0', 'Sunny School');
19 | INSERT INTO `user` VALUES ('2', '莉莉', 'lili@sample.com', '15', '1', 'Garden School');
20 | INSERT INTO `user` VALUES ('3', '杰克', 'jack@sample.com', '25', '0', 'Sunny School');
21 | INSERT INTO `user` VALUES ('4', '张大壮', 'zdazhaung@sample.com', '16', '0', 'Garden School');
22 | INSERT INTO `user` VALUES ('5', '王小壮', 'wxiaozhuang@sample.com', '27', '0', 'Sunny School');
23 | INSERT INTO `user` VALUES ('6', '露西', 'lucy@sample.com', '14', '1', 'Garden School');
24 | INSERT INTO `user` VALUES ('7', '李二壮', 'lerzhuang@sample.com', '9', '0', 'Sunny School');
25 |
--------------------------------------------------------------------------------
/pic/book_info.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yeecode/MyBatisDemo/3860e2fa842214dcf252af15b6ca94a644d9fc8e/pic/book_info.jpg
--------------------------------------------------------------------------------
/示例1/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 |
6 | org.springframework.boot
7 | spring-boot-starter-parent
8 | 2.1.4.RELEASE
9 |
10 |
11 | com.github.yeecode.mybatisdemo
12 | demo
13 | 0.0.1-SNAPSHOT
14 | demo
15 | Demo project for Spring Boot
16 |
17 |
18 | 1.8
19 |
20 |
21 |
22 |
23 | org.springframework.boot
24 | spring-boot-starter
25 |
26 |
27 |
28 | org.springframework.boot
29 | spring-boot-starter-test
30 | test
31 |
32 |
33 |
34 | mysql
35 | mysql-connector-java
36 | runtime
37 |
38 |
39 |
40 |
41 |
42 |
43 | org.springframework.boot
44 | spring-boot-maven-plugin
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/示例1/src/main/java/com/github/yeecode/mybatisdemo/DemoApplication.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo;
2 |
3 | import com.github.yeecode.mybatisdemo.model.User;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 |
6 | import java.sql.Connection;
7 | import java.sql.DriverManager;
8 | import java.sql.ResultSet;
9 | import java.sql.Statement;
10 | import java.util.ArrayList;
11 | import java.util.List;
12 |
13 | @SpringBootApplication
14 | public class DemoApplication {
15 | public static void main(String[] args) throws Exception {
16 | String url = "jdbc:mysql://127.0.0.1:3306/yeecode?serverTimezone=UTC";
17 | String userName = "root";
18 | String password = "yeecode";
19 |
20 | User userParam = new User();
21 | userParam.setSchoolName("Sunny School");
22 |
23 | // 第一步:加载驱动程序
24 | Class.forName("com.mysql.jdbc.Driver");
25 |
26 | // 第二步:获得数据库的连接
27 | Connection conn = DriverManager.getConnection(url, userName, password);
28 |
29 | // 第三步:创建语句并执行
30 | Statement stmt = conn.createStatement();
31 | ResultSet resultSet = stmt.executeQuery("SELECT * FROM `user` WHERE schoolName = \'" + userParam.getSchoolName() + "\';");
32 |
33 | // 第四步:处理数据库操作结果
34 | List userList = new ArrayList<>();
35 | while(resultSet.next()){
36 | User user = new User();
37 | user.setId(resultSet.getInt("id"));
38 | user.setName(resultSet.getString("name"));
39 | user.setEmail(resultSet.getString("email"));
40 | user.setAge(resultSet.getInt("age"));
41 | user.setSex(resultSet.getInt("sex"));
42 | user.setSchoolName(resultSet.getString("schoolName"));
43 | userList.add(user);
44 | }
45 |
46 | // 第五步:关闭连接
47 | stmt.close();
48 |
49 | for (User user : userList) {
50 | System.out.println("name : " + user.getName() + " ; email : " + user.getEmail());
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/示例1/src/main/java/com/github/yeecode/mybatisdemo/model/User.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo.model;
2 |
3 | public class User {
4 | private Integer id;
5 | private String name;
6 | private String email;
7 | private Integer age;
8 | private Integer sex;
9 | private String schoolName;
10 |
11 | public User() {
12 | }
13 |
14 | public Integer getId() {
15 | return id;
16 | }
17 |
18 | public void setId(Integer id) {
19 | this.id = id;
20 | }
21 |
22 | public String getName() {
23 | return name;
24 | }
25 |
26 | public void setName(String name) {
27 | this.name = name;
28 | }
29 |
30 | public String getEmail() {
31 | return email;
32 | }
33 |
34 | public void setEmail(String email) {
35 | this.email = email;
36 | }
37 |
38 | public Integer getAge() {
39 | return age;
40 | }
41 |
42 | public void setAge(Integer age) {
43 | this.age = age;
44 | }
45 |
46 | public Integer getSex() {
47 | return sex;
48 | }
49 |
50 | public void setSex(Integer sex) {
51 | this.sex = sex;
52 | }
53 |
54 | public String getSchoolName() {
55 | return schoolName;
56 | }
57 |
58 | public void setSchoolName(String schoolName) {
59 | this.schoolName = schoolName;
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/示例1/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/示例1/src/test/java/com/github/yeecode/mybatisdemo/DemoApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo;
2 |
3 | import org.junit.Test;
4 | import org.junit.runner.RunWith;
5 | import org.springframework.boot.test.context.SpringBootTest;
6 | import org.springframework.test.context.junit4.SpringRunner;
7 |
8 | @RunWith(SpringRunner.class)
9 | @SpringBootTest
10 | public class DemoApplicationTests {
11 |
12 | @Test
13 | public void contextLoads() {
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/示例10/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 |
6 | org.springframework.boot
7 | spring-boot-starter-parent
8 | 2.1.4.RELEASE
9 |
10 |
11 | com.github.yeecode.mybatisdemo
12 | demo
13 | 0.0.1-SNAPSHOT
14 | demo
15 | Demo project for Spring Boot
16 |
17 |
18 | 1.8
19 |
20 |
21 |
22 |
23 | org.springframework.boot
24 | spring-boot-starter
25 |
26 |
27 |
28 | ognl
29 | ognl
30 | 3.1.24
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | org.springframework.boot
40 | spring-boot-maven-plugin
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/示例10/src/main/java/com/github/yeecode/mybatisdemo/DemoApplication.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.w3c.dom.Document;
5 |
6 | import javax.xml.parsers.DocumentBuilder;
7 | import javax.xml.parsers.DocumentBuilderFactory;
8 | import javax.xml.xpath.XPath;
9 | import javax.xml.xpath.XPathExpression;
10 | import javax.xml.xpath.XPathFactory;
11 |
12 | @SpringBootApplication
13 | public class DemoApplication {
14 | public static void main(String[] args) {
15 | try {
16 | String resource = "info.xml";
17 | DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
18 | DocumentBuilder db = dbf.newDocumentBuilder();
19 | Document doc = db.parse(Thread.currentThread().getContextClassLoader().getResourceAsStream(resource));
20 |
21 | XPathFactory factory = XPathFactory.newInstance();
22 | XPath xpath = factory.newXPath();
23 |
24 | XPathExpression compile = xpath.compile("/members/user[id=1]");
25 | System.out.println(compile.evaluate(doc));
26 | } catch (Exception ex) {
27 | ex.printStackTrace();
28 | }
29 |
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/示例10/src/main/java/com/github/yeecode/mybatisdemo/User.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo;
2 |
3 | public class User {
4 | private Integer id;
5 | private String name;
6 | private String school;
7 |
8 | public Integer getId() {
9 | return id;
10 | }
11 |
12 | public void setId(Integer id) {
13 | this.id = id;
14 | }
15 |
16 | public String getName() {
17 | return name;
18 | }
19 |
20 | public void setName(String name) {
21 | this.name = name;
22 | }
23 |
24 | public String getSchool() {
25 | return school;
26 | }
27 |
28 | public void setSchool(String school) {
29 | this.school = school;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/示例10/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/示例10/src/main/resources/info.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 1
5 | 易哥
6 | Sunny School
7 |
8 |
9 | 2
10 | 莉莉
11 | Garden School
12 |
13 |
--------------------------------------------------------------------------------
/示例11/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 |
6 | org.springframework.boot
7 | spring-boot-starter-parent
8 | 2.1.4.RELEASE
9 |
10 |
11 | com.github.yeecode.mybatisdemo
12 | demo03
13 | 0.0.1-SNAPSHOT
14 | demo
15 | Demo project for Spring Boot
16 |
17 |
18 | 1.8
19 |
20 |
21 |
22 |
23 | org.springframework.boot
24 | spring-boot-starter
25 |
26 |
27 |
28 | org.springframework.boot
29 | spring-boot-starter-test
30 | test
31 |
32 |
33 |
34 |
35 | mysql
36 | mysql-connector-java
37 | 8.0.17
38 |
39 |
40 |
41 |
42 | org.mybatis
43 | mybatis
44 | 3.5.2
45 |
46 |
47 |
48 | com.github.pagehelper
49 | pagehelper
50 | 5.1.10
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 | org.springframework.boot
60 | spring-boot-maven-plugin
61 |
62 |
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/示例11/src/main/java/com/github/yeecode/mybatisdemo/DemoApplication.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo;
2 |
3 | import com.github.yeecode.mybatisdemo.model.User;
4 | import org.apache.ibatis.io.Resources;
5 | import org.apache.ibatis.session.SqlSession;
6 | import org.apache.ibatis.session.SqlSessionFactory;
7 | import org.apache.ibatis.session.SqlSessionFactoryBuilder;
8 | import org.springframework.boot.autoconfigure.SpringBootApplication;
9 |
10 | import java.io.IOException;
11 | import java.io.InputStream;
12 | import java.util.List;
13 |
14 | @SpringBootApplication
15 | public class DemoApplication {
16 | public static void main(String[] args) {
17 | System.out.println("Demo03 is a demo for configuration files, it can't work.");
18 | String resource = "mybatis-config.xml";
19 | InputStream inputStream = null;
20 | try {
21 | inputStream = Resources.getResourceAsStream(resource);
22 | } catch (IOException e) {
23 | e.printStackTrace();
24 | }
25 | SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
26 |
27 | try (SqlSession session = sqlSessionFactory.openSession()) {
28 | User userBean = session.selectOne("com.github.yeecode.mybatisdemo.dao.UserDao.selectUser_A", 1);
29 | System.out.println(userBean.toString());
30 | userBean = session.selectOne("com.github.yeecode.mybatisdemo.dao.UserDao.selectUser_B", 1);
31 | System.out.println(userBean.toString());
32 | userBean = session.selectOne("com.github.yeecode.mybatisdemo.dao.UserDao.selectUser_B", 2);
33 | System.out.println(userBean.toString());
34 |
35 | List userList = session.selectList("com.github.yeecode.mybatisdemo.dao.UserDao.selectUsers", new int[]{1, 2});
36 | for (User user : userList) {
37 | System.out.println(user.toString());
38 | }
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/示例11/src/main/java/com/github/yeecode/mybatisdemo/model/Bag.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo.model;
2 |
3 | public class Bag {
4 | private String name;
5 | private Integer weight;
6 |
7 | public String getName() {
8 | return name;
9 | }
10 |
11 | public void setName(String name) {
12 | this.name = name;
13 | }
14 |
15 | public Integer getWeight() {
16 | return weight;
17 | }
18 |
19 | public void setWeight(Integer weight) {
20 | this.weight = weight;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/示例11/src/main/java/com/github/yeecode/mybatisdemo/model/Book.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo.model;
2 |
3 | public class Book {
4 | private String name;
5 | private Integer price;
6 |
7 | public String getName() {
8 | return name;
9 | }
10 |
11 | public void setName(String name) {
12 | this.name = name;
13 | }
14 |
15 | public Integer getPrice() {
16 | return price;
17 | }
18 |
19 | public void setPrice(Integer price) {
20 | this.price = price;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/示例11/src/main/java/com/github/yeecode/mybatisdemo/model/Boy.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo.model;
2 |
3 | public class Boy extends User {
4 | private String age;
5 |
6 | public String getAge() {
7 | return age;
8 | }
9 |
10 | public void setAge(String age) {
11 | this.age = age;
12 | }
13 |
14 | @Override
15 | public String toString() {
16 |
17 | return super.toString() +"\n"
18 | +"Boy{" +
19 | "age='" + age + '\'' +
20 | '}';
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/示例11/src/main/java/com/github/yeecode/mybatisdemo/model/Girl.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo.model;
2 |
3 | public class Girl extends User {
4 | private String email;
5 |
6 | public String getEmail() {
7 | return email;
8 | }
9 |
10 | public void setEmail(String email) {
11 | this.email = email;
12 | }
13 |
14 | @Override
15 | public String toString() {
16 | return super.toString() + "\n"
17 | +"Girl{" +
18 | "email=" + email +
19 | '}';
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/示例11/src/main/java/com/github/yeecode/mybatisdemo/model/User.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo.model;
2 |
3 | import java.io.Serializable;
4 | import java.util.List;
5 |
6 | public class User implements Serializable {
7 | private Integer id;
8 | private String name;
9 | private Integer sex;
10 | private String schoolName;
11 | private Bag bag;
12 | private List books;
13 |
14 | public User() {
15 | }
16 |
17 | public User(Integer id, String name, Integer sex, String schoolName) {
18 | this.id = id;
19 | this.name = name;
20 | this.sex = sex;
21 | this.schoolName = schoolName;
22 | }
23 |
24 | public Integer getId() {
25 | return id;
26 | }
27 |
28 | public void setId(Integer id) {
29 | this.id = id;
30 | }
31 |
32 | public String getName() {
33 | return name;
34 | }
35 |
36 | public void setName(String name) {
37 | this.name = name;
38 | }
39 |
40 | public Integer getSex() {
41 | return sex;
42 | }
43 |
44 | public void setSex(Integer sex) {
45 | this.sex = sex;
46 | }
47 |
48 | public String getSchoolName() {
49 | return schoolName;
50 | }
51 |
52 | public void setSchoolName(String schoolName) {
53 | this.schoolName = schoolName;
54 | }
55 |
56 | public Bag getBag() {
57 | return bag;
58 | }
59 |
60 | public void setBag(Bag bag) {
61 | this.bag = bag;
62 | }
63 |
64 | public List getBooks() {
65 | return books;
66 | }
67 |
68 | public void setBooks(List books) {
69 | this.books = books;
70 | }
71 |
72 | @Override
73 | public String toString() {
74 | return "User{" +
75 | "id=" + id +
76 | ", name='" + name + '\'' +
77 | ", sex=" + sex +
78 | ", schoolName='" + schoolName + '\'' +
79 | '}';
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/示例11/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/示例11/src/main/resources/com/github/yeecode/mybatisdemo/UserDao.xml:
--------------------------------------------------------------------------------
1 |
2 |
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 |
47 |
48 |
49 |
50 |
51 |
52 |
53 | WHERE `id` = #{id};
54 |
55 |
56 |
59 |
60 |
63 |
64 |
72 |
73 |
74 | DELETE FROM `user`
75 |
76 |
77 |
78 |
79 |
80 | SELECT LAST_INSERT_ID()
81 |
82 | INSERT INTO `user` VALUES (#{id},#{name},#{email},#{age},#{sex},#{schoolName});
83 |
84 |
85 |
86 | UPDATE `user`
87 | SET `email` = #{email}
88 |
89 |
90 |
--------------------------------------------------------------------------------
/示例11/src/main/resources/mybatis-config.xml:
--------------------------------------------------------------------------------
1 |
2 |
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 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
--------------------------------------------------------------------------------
/示例11/src/test/java/com/github/yeecode/mybatisdemo/DemoApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo;
2 |
3 | import org.junit.Test;
4 | import org.junit.runner.RunWith;
5 | import org.springframework.boot.test.context.SpringBootTest;
6 | import org.springframework.test.context.junit4.SpringRunner;
7 |
8 | @RunWith(SpringRunner.class)
9 | @SpringBootTest
10 | public class DemoApplicationTests {
11 |
12 | @Test
13 | public void contextLoads() {
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/示例12/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 |
6 | org.springframework.boot
7 | spring-boot-starter-parent
8 | 2.1.4.RELEASE
9 |
10 |
11 | com.github.yeecode.mybatisdemo
12 | demo
13 | 0.0.1-SNAPSHOT
14 | demo
15 | Demo project for Spring Boot
16 |
17 |
18 | 1.8
19 |
20 |
21 |
22 |
23 | org.springframework.boot
24 | spring-boot-starter
25 |
26 |
27 |
28 |
29 |
30 |
31 | org.springframework.boot
32 | spring-boot-maven-plugin
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/示例12/src/main/java/com/github/yeecode/mybatisdemo/DemoApplication.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo;
2 |
3 | import com.github.yeecode.mybatisdemo.builder.GardenSchoolUserBuilder;
4 | import com.github.yeecode.mybatisdemo.builder.SunnySchoolUserBuilder;
5 | import com.github.yeecode.mybatisdemo.builder.UserBuilder;
6 | import com.github.yeecode.mybatisdemo.model.User;
7 | import org.springframework.boot.autoconfigure.SpringBootApplication;
8 |
9 | @SpringBootApplication
10 | public class DemoApplication {
11 | public static void main(String[] args) {
12 | // 第一种:先创建对象在设置属性的方式建造对象
13 | User user01 = new User();
14 | user01.setName("Candy");
15 | user01.setEmail("candy@sunnyschool.com");
16 | user01.setAge(7);
17 | user01.setSex(1);
18 | user01.setSchoolName("Sunny School");
19 | // 第二种:用构造方法建造对象
20 | User user02 = new User("Candy", "candy@sunnyschool.com", 7, 1, "Sunny School");
21 |
22 | // 第三种:用建造者建造对象
23 |
24 | // 3.1 用匿名建造者建造一个对象
25 | User user03 = new SunnySchoolUserBuilder("Candy").setSex(1).build();
26 |
27 | // 3.2 分步设置建造者属性,建造一个对象
28 | UserBuilder userBuilder04 = new SunnySchoolUserBuilder("Eric");
29 | userBuilder04.setEmail("supereric@abc.com").build();
30 | User user04 = userBuilder04.build();
31 |
32 | System.out.println(user01);
33 | System.out.println(user02);
34 | System.out.println(user03);
35 | System.out.println(user04);
36 |
37 | }
38 | }
39 |
40 |
41 |
--------------------------------------------------------------------------------
/示例12/src/main/java/com/github/yeecode/mybatisdemo/builder/GardenSchoolUserBuilder.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo.builder;
2 |
3 | import com.github.yeecode.mybatisdemo.model.User;
4 |
5 | public class GardenSchoolUserBuilder implements UserBuilder {
6 | private String name;
7 | private String email;
8 | private Integer age;
9 | private Integer sex;
10 | private String schoolName;
11 |
12 | public GardenSchoolUserBuilder(String name) {
13 | this.name = name;
14 | }
15 |
16 | public GardenSchoolUserBuilder setEmail(String email) {
17 | this.email = email;
18 | return this;
19 | }
20 |
21 | public GardenSchoolUserBuilder setAge(Integer age) {
22 | this.age = age;
23 | return this;
24 | }
25 |
26 | public GardenSchoolUserBuilder setSex(Integer sex) {
27 | this.sex = sex;
28 | return this;
29 | }
30 |
31 | public User build() {
32 | if (this.email == null) {
33 | this.email = this.name.toLowerCase().replace(" ", "").concat("@gardenschool.com");
34 | }
35 | if (this.age == null) {
36 | this.age = 13;
37 | }
38 | if (this.sex == null) {
39 | this.sex = 0;
40 | }
41 | this.schoolName = "Garden School";
42 | return new User(name, email, age, sex, schoolName);
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/示例12/src/main/java/com/github/yeecode/mybatisdemo/builder/SunnySchoolUserBuilder.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo.builder;
2 |
3 | import com.github.yeecode.mybatisdemo.model.User;
4 |
5 | public class SunnySchoolUserBuilder implements UserBuilder {
6 | private String name;
7 | private String email;
8 | private Integer age;
9 | private Integer sex;
10 | private String schoolName;
11 |
12 | public SunnySchoolUserBuilder(String name) {
13 | this.name = name;
14 | }
15 |
16 | public SunnySchoolUserBuilder setEmail(String email) {
17 | this.email = email;
18 | return this;
19 | }
20 |
21 | public SunnySchoolUserBuilder setAge(Integer age) {
22 | this.age = age;
23 | return this;
24 | }
25 |
26 | public SunnySchoolUserBuilder setSex(Integer sex) {
27 | this.sex = sex;
28 | return this;
29 | }
30 |
31 | public User build() {
32 | if (this.name != null && this.email == null) {
33 | this.email = this.name.toLowerCase().replace(" ", "").concat("@sunnyschool.com");
34 | }
35 | if (this.age == null) {
36 | this.age = 7;
37 | }
38 | if (this.sex == null) {
39 | this.sex = 0;
40 | }
41 | this.schoolName = "Sunny School";
42 | return new User(name, email, age, sex, schoolName);
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/示例12/src/main/java/com/github/yeecode/mybatisdemo/builder/UserBuilder.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo.builder;
2 |
3 | import com.github.yeecode.mybatisdemo.model.User;
4 |
5 | public interface UserBuilder {
6 |
7 | public UserBuilder setEmail(String email);
8 |
9 | public UserBuilder setAge(Integer age);
10 |
11 | public UserBuilder setSex(Integer sex);
12 |
13 | public User build();
14 | }
15 |
--------------------------------------------------------------------------------
/示例12/src/main/java/com/github/yeecode/mybatisdemo/model/User.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo.model;
2 |
3 | public class User {
4 | private String name;
5 | private String email;
6 | private Integer age;
7 | private Integer sex;
8 | private String schoolName;
9 |
10 | public User() {
11 | }
12 |
13 | public User(String name, String email, Integer age, Integer sex, String schoolName) {
14 | this.name = name;
15 | this.email = email;
16 | this.age = age;
17 | this.sex = sex;
18 | this.schoolName = schoolName;
19 | }
20 |
21 | public String getName() {
22 | return name;
23 | }
24 |
25 | public void setName(String name) {
26 | this.name = name;
27 | }
28 |
29 | public String getEmail() {
30 | return email;
31 | }
32 |
33 | public void setEmail(String email) {
34 | this.email = email;
35 | }
36 |
37 | public Integer getAge() {
38 | return age;
39 | }
40 |
41 | public void setAge(Integer age) {
42 | this.age = age;
43 | }
44 |
45 | public Integer getSex() {
46 | return sex;
47 | }
48 |
49 | public void setSex(Integer sex) {
50 | this.sex = sex;
51 | }
52 |
53 | public String getSchoolName() {
54 | return schoolName;
55 | }
56 |
57 | public void setSchoolName(String schoolName) {
58 | this.schoolName = schoolName;
59 | }
60 |
61 | public String toString() {
62 | return "User{name=".concat(name)
63 | .concat(", email =").concat(email)
64 | .concat(", age =").concat(age.toString())
65 | .concat(", sex =").concat(sex.toString())
66 | .concat(", schoolName =").concat(schoolName)
67 | .concat("}").concat("\n") ;
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/示例12/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/示例13/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 |
6 | org.springframework.boot
7 | spring-boot-starter-parent
8 | 2.1.4.RELEASE
9 |
10 |
11 | com.github.yeecode.mybatisdemo
12 | demo
13 | 0.0.1-SNAPSHOT
14 | demo
15 | Demo project for Spring Boot
16 |
17 |
18 | 1.8
19 |
20 |
21 |
22 |
23 | org.springframework.boot
24 | spring-boot-starter
25 |
26 |
27 |
28 | org.springframework.boot
29 | spring-boot-starter-test
30 | test
31 |
32 |
33 |
34 |
35 | mysql
36 | mysql-connector-java
37 | 8.0.17
38 |
39 |
40 |
41 |
42 | org.mybatis
43 | mybatis
44 | 3.5.2
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 | org.springframework.boot
54 | spring-boot-maven-plugin
55 |
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/示例13/src/main/java/com/github/yeecode/mybatisdemo/DemoApplication.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo;
2 |
3 | import com.github.yeecode.mybatisdemo.model.User;
4 | import org.apache.ibatis.io.Resources;
5 | import org.apache.ibatis.session.SqlSession;
6 | import org.apache.ibatis.session.SqlSessionFactory;
7 | import org.apache.ibatis.session.SqlSessionFactoryBuilder;
8 | import org.springframework.boot.autoconfigure.SpringBootApplication;
9 |
10 | import java.io.IOException;
11 | import java.io.InputStream;
12 | import java.util.List;
13 |
14 | @SpringBootApplication
15 | public class DemoApplication {
16 | public static void main(String[] args) {
17 | String resource = "mybatis-config.xml";
18 | InputStream inputStream = null;
19 | try {
20 | inputStream = Resources.getResourceAsStream(resource);
21 | } catch (IOException e) {
22 | e.printStackTrace();
23 | }
24 | SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
25 |
26 | try (SqlSession session = sqlSessionFactory.openSession()) {
27 | User userBean = session.selectOne("com.github.yeecode.mybatisdemo.dao.UserDao.selectUser_A", 1);
28 | System.out.println("selectUser_A, param=1 : " + userBean.toString());
29 | userBean = session.selectOne("com.github.yeecode.mybatisdemo.dao.UserDao.selectUser_B", 1);
30 | System.out.println("selectUser_B, param=1 : " + userBean.toString());
31 | userBean = session.selectOne("com.github.yeecode.mybatisdemo.dao.UserDao.selectUser_B", 2);
32 | System.out.println("selectUser_B, param=2 : " + userBean.toString());
33 |
34 | User userParam = new User();
35 | userParam.setName("莉莉");
36 | userParam.setSchoolName("Garden School");
37 | userBean = session.selectOne("com.github.yeecode.mybatisdemo.dao.UserDao.selectUserByNameAndSchoolName", userParam);
38 | System.out.println("selectUsersByNameAndSchoolName, param=userParam : " + userBean.toString());
39 |
40 | userParam.setName(null);
41 | List userList = session.selectList("com.github.yeecode.mybatisdemo.dao.UserDao.selectUsersByNameOrSchoolName", userParam);
42 | System.out.println("selectUsersByNameOrSchoolName: ");
43 | for (User user : userList) {
44 | System.out.println(user.toString());
45 | }
46 |
47 | userList = session.selectList("com.github.yeecode.mybatisdemo.dao.UserDao.selectUsers", new int[]{1, 2});
48 | System.out.println("selectUsers, param=1,2 : ");
49 | for (User user : userList) {
50 | System.out.println(user.toString());
51 | }
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/示例13/src/main/java/com/github/yeecode/mybatisdemo/model/Boy.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo.model;
2 |
3 | public class Boy extends User {
4 | private String age;
5 |
6 | public String getAge() {
7 | return age;
8 | }
9 |
10 | public void setAge(String age) {
11 | this.age = age;
12 | }
13 |
14 | @Override
15 | public String toString() {
16 |
17 | return super.toString() +"\n"
18 | +"Boy{" +
19 | "age='" + age + '\'' +
20 | '}';
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/示例13/src/main/java/com/github/yeecode/mybatisdemo/model/Girl.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo.model;
2 |
3 | public class Girl extends User {
4 | private String email;
5 |
6 | public String getEmail() {
7 | return email;
8 | }
9 |
10 | public void setEmail(String email) {
11 | this.email = email;
12 | }
13 |
14 | @Override
15 | public String toString() {
16 | return super.toString() + "\n"
17 | +"Girl{" +
18 | "email=" + email +
19 | '}';
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/示例13/src/main/java/com/github/yeecode/mybatisdemo/model/User.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo.model;
2 |
3 | import java.io.Serializable;
4 |
5 | public class User implements Serializable {
6 | private Integer id;
7 | private String name;
8 | private Integer sex;
9 | private String schoolName;
10 |
11 | public User() {
12 | }
13 |
14 | public User(Integer id, String name, Integer sex, String schoolName) {
15 | this.id = id;
16 | this.name = name;
17 | this.sex = sex;
18 | this.schoolName = schoolName;
19 | }
20 |
21 | public Integer getId() {
22 | return id;
23 | }
24 |
25 | public void setId(Integer id) {
26 | this.id = id;
27 | }
28 |
29 | public String getName() {
30 | return name;
31 | }
32 |
33 | public void setName(String name) {
34 | this.name = name;
35 | }
36 |
37 | public Integer getSex() {
38 | return sex;
39 | }
40 |
41 | public void setSex(Integer sex) {
42 | this.sex = sex;
43 | }
44 |
45 | public String getSchoolName() {
46 | return schoolName;
47 | }
48 |
49 | public void setSchoolName(String schoolName) {
50 | this.schoolName = schoolName;
51 | }
52 |
53 | @Override
54 | public String toString() {
55 | return "User{" +
56 | "id=" + id +
57 | ", name='" + name + '\'' +
58 | ", sex=" + sex +
59 | ", schoolName='" + schoolName + '\'' +
60 | '}';
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/示例13/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/示例13/src/main/resources/com/github/yeecode/mybatisdemo/UserDao.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
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 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
55 |
56 |
59 |
60 |
68 |
69 |
70 | AND `schoolName` = #{schoolName}
71 |
72 |
73 |
77 |
78 |
89 |
90 |
93 |
94 |
97 |
98 |
--------------------------------------------------------------------------------
/示例13/src/main/resources/mybatis-config.xml:
--------------------------------------------------------------------------------
1 |
2 |
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 |
--------------------------------------------------------------------------------
/示例13/src/test/java/com/github/yeecode/mybatisdemo/DemoApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo;
2 |
3 | import org.junit.Test;
4 | import org.junit.runner.RunWith;
5 | import org.springframework.boot.test.context.SpringBootTest;
6 | import org.springframework.test.context.junit4.SpringRunner;
7 |
8 | @RunWith(SpringRunner.class)
9 | @SpringBootTest
10 | public class DemoApplicationTests {
11 |
12 | @Test
13 | public void contextLoads() {
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/示例14/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 |
6 | org.springframework.boot
7 | spring-boot-starter-parent
8 | 2.1.4.RELEASE
9 |
10 |
11 | com.github.yeecode.mybatisdemo
12 | demo04
13 | 0.0.1-SNAPSHOT
14 | demo
15 | Demo project for Spring Boot
16 |
17 |
18 | 1.8
19 |
20 |
21 |
22 |
23 | org.springframework.boot
24 | spring-boot-starter-web
25 |
26 |
27 |
28 | org.mybatis.spring.boot
29 | mybatis-spring-boot-starter
30 | 2.0.0
31 |
32 |
33 |
34 | org.springframework.boot
35 | spring-boot-starter
36 |
37 |
38 |
39 | org.springframework.boot
40 | spring-boot-starter-test
41 | test
42 |
43 |
44 |
45 |
46 | mysql
47 | mysql-connector-java
48 | 8.0.17
49 |
50 |
51 |
52 |
53 | org.mybatis
54 | mybatis
55 | 3.5.2
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 | org.springframework.boot
65 | spring-boot-maven-plugin
66 |
67 |
68 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/示例14/src/main/java/com/github/yeecode/mybatisdemo/DemoApplication.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 |
6 | @SpringBootApplication
7 | public class DemoApplication {
8 | public static void main(String[] args) {
9 | SpringApplication.run(DemoApplication.class, args);
10 | System.out.println("Via http://127.0.0.1:8099/user/test/ to trigger this demo.");
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/示例14/src/main/java/com/github/yeecode/mybatisdemo/controller/UserController.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo.controller;
2 |
3 | import com.github.yeecode.mybatisdemo.dao.UserDao;
4 | import com.github.yeecode.mybatisdemo.model.User;
5 | import org.springframework.beans.factory.annotation.Autowired;
6 | import org.springframework.web.bind.annotation.RequestMapping;
7 | import org.springframework.web.bind.annotation.RestController;
8 |
9 | import java.util.List;
10 |
11 | @RestController
12 | @RequestMapping("/user")
13 | public class UserController {
14 | @Autowired
15 | private UserDao userDao;
16 |
17 | @RequestMapping("/test")
18 | public String index() {
19 |
20 | User user = userDao.queryUserById(1);
21 | System.out.println("queryUserById(1):" + user.getName());
22 |
23 | List userList = userDao.queryUsersByIds(new int[]{1,3});
24 | System.out.print("queryUsersByIds(new Integer[]{1,3}):");
25 | for (User item : userList) {
26 | System.out.print(item.getName() + "; ");
27 | }
28 | System.out.println();
29 |
30 | userList = userDao.queryUsersBySchoolName("Sunny School");
31 | System.out.print("queryUsersBySchoolName(\"Sunny School\") :");
32 |
33 | for (User item : userList) {
34 | System.out.print(item.getName() + "; ");
35 | }
36 | System.out.println();
37 |
38 | return "success";
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/示例14/src/main/java/com/github/yeecode/mybatisdemo/dao/UserDao.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo.dao;
2 |
3 | import com.github.yeecode.mybatisdemo.model.User;
4 | import com.github.yeecode.mybatisdemo.provider.UserProvider;
5 | import org.apache.ibatis.annotations.Mapper;
6 | import org.apache.ibatis.annotations.Select;
7 | import org.apache.ibatis.annotations.SelectProvider;
8 |
9 | import java.util.List;
10 |
11 | @Mapper
12 | public interface UserDao {
13 | @Select("SELECT * FROM `user` WHERE `id` = #{id}")
14 | User queryUserById(Integer id);
15 |
16 | @Select("")
24 | List queryUsersByIds(int[] ids);
25 |
26 | @SelectProvider(type = UserProvider.class, method = "queryUsersBySchoolName")
27 | List queryUsersBySchoolName(String schoolName);
28 | }
29 |
--------------------------------------------------------------------------------
/示例14/src/main/java/com/github/yeecode/mybatisdemo/model/User.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo.model;
2 |
3 | import java.io.Serializable;
4 |
5 | public class User implements Serializable {
6 | private Integer id;
7 | private String name;
8 | private Integer sex;
9 | private String schoolName;
10 |
11 | public Integer getId() {
12 | return id;
13 | }
14 |
15 | public void setId(Integer id) {
16 | this.id = id;
17 | }
18 |
19 | public String getName() {
20 | return name;
21 | }
22 |
23 | public void setName(String name) {
24 | this.name = name;
25 | }
26 |
27 | public Integer getSex() {
28 | return sex;
29 | }
30 |
31 | public void setSex(Integer sex) {
32 | this.sex = sex;
33 | }
34 |
35 | public String getSchoolName() {
36 | return schoolName;
37 | }
38 |
39 | public void setSchoolName(String schoolName) {
40 | this.schoolName = schoolName;
41 | }
42 |
43 | @Override
44 | public String toString() {
45 | return "User{" +
46 | "id=" + id +
47 | ", name='" + name + '\'' +
48 | ", sex=" + sex +
49 | ", schoolName='" + schoolName + '\'' +
50 | '}';
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/示例14/src/main/java/com/github/yeecode/mybatisdemo/provider/UserProvider.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo.provider;
2 |
3 | import org.apache.ibatis.jdbc.SQL;
4 |
5 | public class UserProvider {
6 | public String queryUsersBySchoolName() {
7 | return new SQL()
8 | .SELECT("*")
9 | .FROM("user")
10 | .WHERE("schoolName = #{schoolName}")
11 | .toString();
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/示例14/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | server.port=8099
2 |
3 | spring.datasource.url=jdbc:mysql://127.0.0.1:3306/yeecode?serverTimezone=UTC
4 | spring.datasource.username=root
5 | spring.datasource.password=yeecode
6 |
7 |
--------------------------------------------------------------------------------
/示例14/src/main/resources/mybatis-config.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/示例14/src/test/java/com/github/yeecode/mybatisdemo/DemoApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo;
2 |
3 | import org.junit.Test;
4 | import org.junit.runner.RunWith;
5 | import org.springframework.boot.test.context.SpringBootTest;
6 | import org.springframework.test.context.junit4.SpringRunner;
7 |
8 | @RunWith(SpringRunner.class)
9 | @SpringBootTest
10 | public class DemoApplicationTests {
11 |
12 | @Test
13 | public void contextLoads() {
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/示例15/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 |
6 | org.springframework.boot
7 | spring-boot-starter-parent
8 | 2.1.4.RELEASE
9 |
10 |
11 | com.github.yeecode.mybatisdemo
12 | demo
13 | 0.0.1-SNAPSHOT
14 | demo
15 | Demo project for Spring Boot
16 |
17 |
18 | 1.8
19 |
20 |
21 |
22 |
23 | org.springframework.boot
24 | spring-boot-starter
25 |
26 |
27 |
28 | org.springframework.boot
29 | spring-boot-starter-test
30 | test
31 |
32 |
33 |
34 | ognl
35 | ognl
36 | 3.1.24
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 | org.springframework.boot
45 | spring-boot-maven-plugin
46 |
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/示例15/src/main/java/com/github/yeecode/mybatisdemo/DemoApplication.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo;
2 |
3 | import com.github.yeecode.mybatisdemo.model.User;
4 | import ognl.Ognl;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 |
7 | import java.util.Date;
8 | import java.util.HashMap;
9 | import java.util.Map;
10 |
11 | @SpringBootApplication
12 | public class DemoApplication {
13 | public static void main(String[] args) {
14 | try {
15 | User user01 = new User(1, "易哥", 18);
16 | User user02 = new User(2, "莉莉", 15);
17 | Map userMap = new HashMap<>();
18 | userMap.put("user1", user01);
19 | userMap.put("user2", user02);
20 |
21 | // Java方式读取列表中对象的属性值
22 | String userName = userMap.get("user2").getName();
23 | System.out.println(userName);
24 |
25 | readAndWriteProps(userMap);
26 | callFunction();
27 | runAfterParse(userMap);
28 | } catch (Exception ex) {
29 | ex.printStackTrace();
30 | }
31 |
32 | }
33 |
34 | public static void readAndWriteProps(Map userMap) throws Exception {
35 | // 使用表达式读写根对象中信息的示例
36 | // 该示例中要用到的OGNL函数:
37 | // getValue(String expression, Object root) :对root内容执行expression中的操作,并返回结果
38 |
39 | // 读取根对象的属性值
40 | Integer age = (Integer) Ognl.getValue("age", userMap.get("user1"));
41 | System.out.println("读取根对象属性,得到age:" + age);
42 | // 设置根对象的属性值
43 | Ognl.getValue("age = 19", userMap.get("user1"));
44 | age = (Integer) Ognl.getValue("age", userMap.get("user1"));
45 | System.out.println("设置根对象属性后,得到age:" + age);
46 |
47 | // 使用表达式读写环境中信息的示例
48 | // 该示例中要用到的OGNL函数:
49 | // getValue(String expression, Map context, Object root) :在context环境中对root内容执行expression中的操作,并返回结果
50 |
51 | // 读取环境中的信息
52 | String userName2 = (String) Ognl.getValue("#user2.name", userMap, new Object());
53 | System.out.println("读取环境中的信息,得到user2的name:" + userName2);
54 | // 读取环境中的信息,并进行判断
55 | Boolean result = (Boolean) Ognl.getValue("#user2.name != '丽丽'", userMap, new Object());
56 | System.out.println("读取环境中的信息,并进行判断,得到:" + result);
57 | // 设置环境中的信息
58 | Ognl.getValue("#user2.name = '小华'", userMap, new Object());
59 | String newUserName = (String) Ognl.getValue("#user2.name", userMap, new Object());
60 | System.out.println("设置环境中的信息后,得到user2的name:" + newUserName);
61 | }
62 |
63 | public static void callFunction() throws Exception {
64 | // 调用对象方法
65 | Integer hashCode = (Integer) Ognl.getValue("hashCode()", "yeecode");
66 | System.out.println("对字符串对象调用hashCode方法得到:" + hashCode);
67 | // 调用类方法
68 | Double result = (Double)Ognl.getValue("@java.lang.Math@random()", null);
69 | System.out.println("调用Math类中的静态方法random,得到:" + result);
70 | }
71 |
72 | public static void runAfterParse(Map userMap) throws Exception {
73 | String userName;
74 |
75 | // 先对表达式解析,然后再执行可以提高效率
76 | long time1 = new Date().getTime();
77 | // 解析表达式
78 | Object expressionTree = Ognl.parseExpression("#user2.name");
79 | // 重复运行多次
80 | for (int i = 0; i < 10000; i++) {
81 | userName = (String) Ognl.getValue(expressionTree, userMap, new Object());
82 | }
83 | long time2 = new Date().getTime();
84 | // 直接重复运行多次
85 | for (int i = 0; i < 10000; i++) {
86 | userName = (String) Ognl.getValue("#user2.name", userMap, new Object());
87 | }
88 | long time3 = new Date().getTime();
89 |
90 | System.out.println("编译之后再执行,共花费" + (time2 - time1) + "ms");
91 | System.out.println("不编译直接执行,共花费" + (time3 - time2) + "ms");
92 | }
93 |
94 | }
95 |
--------------------------------------------------------------------------------
/示例15/src/main/java/com/github/yeecode/mybatisdemo/model/User.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo.model;
2 |
3 | public class User {
4 | private Integer id;
5 | private String name;
6 | private String email;
7 | private Integer age;
8 |
9 | public User(Integer id, String name, Integer age) {
10 | this.id = id;
11 | this.name = name;
12 | this.age = age;
13 | }
14 |
15 | public static void saySlogan() {
16 | System.out.println("We are young!");
17 | }
18 |
19 | public void sayHi() {
20 | System.out.println("Hi, I am " + this.name);
21 | }
22 |
23 | public Integer getId() {
24 | return id;
25 | }
26 |
27 | public void setId(Integer id) {
28 | this.id = id;
29 | }
30 |
31 | public String getName() {
32 | return name;
33 | }
34 |
35 | public void setName(String name) {
36 | this.name = name;
37 | }
38 |
39 | public String getEmail() {
40 | return email;
41 | }
42 |
43 | public void setEmail(String email) {
44 | this.email = email;
45 | }
46 |
47 | public Integer getAge() {
48 | return age;
49 | }
50 |
51 | public void setAge(Integer age) {
52 | this.age = age;
53 | }
54 |
55 |
56 | }
57 |
--------------------------------------------------------------------------------
/示例15/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/示例16/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 |
6 | org.springframework.boot
7 | spring-boot-starter-parent
8 | 2.1.4.RELEASE
9 |
10 |
11 | com.github.yeecode.mybatisdemo
12 | demo
13 | 0.0.1-SNAPSHOT
14 | demo
15 | Demo project for Spring Boot
16 |
17 |
18 | 1.8
19 |
20 |
21 |
22 |
23 | org.springframework.boot
24 | spring-boot-starter
25 |
26 |
27 | mysql
28 | mysql-connector-java
29 | 8.0.17
30 |
31 |
32 | org.mybatis
33 | mybatis
34 | 3.5.2
35 |
36 |
37 |
38 |
39 |
40 |
41 | org.springframework.boot
42 | spring-boot-maven-plugin
43 |
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/示例16/src/main/java/com/github/yeecode/mybatisdemo/DemoApplication.java:
--------------------------------------------------------------------------------
1 | package com.github.yeecode.mybatisdemo;
2 |
3 | import org.apache.ibatis.io.Resources;
4 | import org.apache.ibatis.jdbc.Null;
5 | import org.apache.ibatis.jdbc.ScriptRunner;
6 | import org.apache.ibatis.jdbc.SqlRunner;
7 | import org.apache.ibatis.session.SqlSession;
8 | import org.apache.ibatis.session.SqlSessionFactory;
9 | import org.apache.ibatis.session.SqlSessionFactoryBuilder;
10 | import org.springframework.boot.autoconfigure.SpringBootApplication;
11 |
12 | import java.io.IOException;
13 | import java.io.InputStream;
14 | import java.sql.Connection;
15 | import java.util.List;
16 | import java.util.Map;
17 |
18 | @SpringBootApplication
19 | public class DemoApplication {
20 | public static void main(String[] args) throws Exception {
21 | // 首先获取Connection对象备用,也可以使用其他方式获取
22 | String resource = "mybatis-config.xml";
23 | InputStream inputStream = null;
24 | try {
25 | inputStream = Resources.getResourceAsStream(resource);
26 | } catch (IOException e) {
27 | e.printStackTrace();
28 | }
29 | SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
30 | SqlSession sqlSession = sqlSessionFactory.openSession();
31 | Connection connection = sqlSession.getConnection();
32 |
33 | // SqlRunner类的使用
34 | String sql = "SELECT * FROM user WHERE age = ?;";
35 | SqlRunner sqlRunner = new SqlRunner(connection);
36 | List