diff --git a/spring-boot-demo-mybatis/pom.xml b/spring-boot-demo-mybatis/pom.xml
index 1104a81..1bc0e61 100644
--- a/spring-boot-demo-mybatis/pom.xml
+++ b/spring-boot-demo-mybatis/pom.xml
@@ -20,19 +20,35 @@
1.3.1
1.1.5
+ 1.1.1
+ 1.1.0
+
org.mybatis.spring.boot
mybatis-spring-boot-starter
${mybatis.starter.version}
+
com.alibaba
druid-spring-boot-starter
${druid.starter.version}
+
+
+ tk.mybatis
+ mapper-spring-boot-starter
+ ${mapper.version}
+
+
+
+ com.github.pagehelper
+ pagehelper-spring-boot-starter
+ ${pagehelper.version}
+
diff --git a/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/SpringBootDemoMybatisApplication.java b/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/SpringBootDemoMybatisApplication.java
index cfa979e..6edeba6 100644
--- a/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/SpringBootDemoMybatisApplication.java
+++ b/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/SpringBootDemoMybatisApplication.java
@@ -1,9 +1,11 @@
package com.xkcoding.springbootdemomybatis;
+import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
+@MapperScan(basePackages = {"com.xkcoding.springbootdemomybatis.mapper"})
public class SpringBootDemoMybatisApplication {
public static void main(String[] args) {
diff --git a/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/controller/MybatisUserController.java b/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/controller/MybatisUserController.java
new file mode 100644
index 0000000..25ae8a2
--- /dev/null
+++ b/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/controller/MybatisUserController.java
@@ -0,0 +1,80 @@
+package com.xkcoding.springbootdemomybatis.controller;
+
+import com.google.common.collect.Lists;
+import com.xkcoding.springbootdemomybatis.model.MybatisUser;
+import com.xkcoding.springbootdemomybatis.service.impl.MybatisUserServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@RestController
+@RequestMapping("/user")
+public class MybatisUserController {
+
+ @Autowired
+ private MybatisUserServiceImpl mybatisUserService;
+
+ @GetMapping("/save")
+ public MybatisUser save() {
+ MybatisUser mybatisUser = new MybatisUser();
+ mybatisUser.setName("xkcoding");
+ mybatisUser.setTel("18600000000");
+ mybatisUser.setCreateTime(new Date());
+ return mybatisUserService.save(mybatisUser);
+ }
+
+ @GetMapping("/saveList")
+ public Integer saveList() {
+ ArrayList userList = Lists.newArrayList();
+ for (int i = 0; i < 20; i++) {
+ MybatisUser mybatisUser = new MybatisUser();
+ mybatisUser.setName("xkcoding" + i);
+ mybatisUser.setTel("186111111" + ((i < 10) ? ("0" + i) : i));
+ mybatisUser.setCreateTime(new Date());
+ userList.add(mybatisUser);
+ }
+ return mybatisUserService.saveList(userList);
+ }
+
+ @GetMapping("/update")
+ public MybatisUser update() {
+ MybatisUser mybatisUser = new MybatisUser();
+ mybatisUser.setId(2L);
+ mybatisUser.setName(" 修改后的名字 ");
+ mybatisUserService.update(mybatisUser);
+
+ return mybatisUserService.update(mybatisUser);
+ }
+
+ @GetMapping("/delete")
+ public MybatisUser delete() {
+ MybatisUser mybatisUser = new MybatisUser();
+ mybatisUser.setId(1L);
+ mybatisUserService.delete(mybatisUser);
+
+ return mybatisUserService.findById(1L);
+ }
+
+ @GetMapping("/find/{id}")
+ public MybatisUser findById(@PathVariable Long id) {
+ return mybatisUserService.findById(id);
+ }
+
+ @GetMapping("/find")
+ public MybatisUser findByName(@RequestParam String name) {
+ return mybatisUserService.findByName(name);
+ }
+
+ @GetMapping({"", "/"})
+ public List findAll() {
+ return mybatisUserService.findAll();
+ }
+
+ @GetMapping("/page")
+ public List findByPage(@RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "5") Integer pageSize) {
+ return mybatisUserService.findMybatisUserByPage(pageNum, pageSize);
+ }
+}
diff --git a/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/mapper/MybatisUserMapper.java b/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/mapper/MybatisUserMapper.java
new file mode 100644
index 0000000..a07bf10
--- /dev/null
+++ b/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/mapper/MybatisUserMapper.java
@@ -0,0 +1,11 @@
+package com.xkcoding.springbootdemomybatis.mapper;
+
+import com.xkcoding.springbootdemomybatis.model.MybatisUser;
+import com.xkcoding.springbootdemomybatis.utils.MyMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Component;
+
+@Component
+public interface MybatisUserMapper extends MyMapper {
+ MybatisUser findByName(@Param("name") String name);
+}
diff --git a/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/model/MybatisUser.java b/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/model/MybatisUser.java
new file mode 100644
index 0000000..d0e19e0
--- /dev/null
+++ b/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/model/MybatisUser.java
@@ -0,0 +1,27 @@
+package com.xkcoding.springbootdemomybatis.model;
+
+import lombok.*;
+
+import javax.persistence.*;
+import java.util.Date;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString
+@Table(name = "mybatis_user")
+public class MybatisUser {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY,generator = "JDBC")
+ private Long id;
+
+ @Column(name = "name")
+ private String name;
+
+ @Column(name = "tel")
+ private String tel;
+
+ @Column(name = "create_time")
+ private Date createTime;
+}
diff --git a/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/service/MybatisUserService.java b/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/service/MybatisUserService.java
new file mode 100644
index 0000000..cebbd98
--- /dev/null
+++ b/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/service/MybatisUserService.java
@@ -0,0 +1,23 @@
+package com.xkcoding.springbootdemomybatis.service;
+
+import com.xkcoding.springbootdemomybatis.model.MybatisUser;
+
+import java.util.List;
+
+public interface MybatisUserService {
+ MybatisUser save(MybatisUser user);
+
+ Integer saveList(List userList);
+
+ MybatisUser update(MybatisUser user);
+
+ Integer delete(MybatisUser user);
+
+ MybatisUser findById(Long id);
+
+ MybatisUser findByName(String name);
+
+ List findAll();
+
+ List findMybatisUserByPage(Integer pageNum, Integer pageSize);
+}
diff --git a/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/service/impl/MybatisUserServiceImpl.java b/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/service/impl/MybatisUserServiceImpl.java
new file mode 100644
index 0000000..7282e6e
--- /dev/null
+++ b/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/service/impl/MybatisUserServiceImpl.java
@@ -0,0 +1,68 @@
+package com.xkcoding.springbootdemomybatis.service.impl;
+
+import com.github.pagehelper.PageHelper;
+import com.xiaoleilu.hutool.util.PageUtil;
+import com.xkcoding.springbootdemomybatis.mapper.MybatisUserMapper;
+import com.xkcoding.springbootdemomybatis.model.MybatisUser;
+import com.xkcoding.springbootdemomybatis.service.MybatisUserService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@Slf4j
+public class MybatisUserServiceImpl implements MybatisUserService {
+
+ @Autowired
+ private MybatisUserMapper mybatisUserMapper;
+
+ @Override
+ public MybatisUser save(MybatisUser user) {
+ mybatisUserMapper.insertUseGeneratedKeys(user);
+ return user;
+ }
+
+ @Override
+ public Integer saveList(List userList) {
+ return mybatisUserMapper.insertList(userList);
+ }
+
+ @Override
+ public MybatisUser update(MybatisUser user) {
+ int i = mybatisUserMapper.updateByPrimaryKeySelective(user);
+ if (i > 0) {
+ log.info("【MybatisUserService】更新成功:{}条目", i);
+ } else {
+ log.error("【MybatisUserService】更新失败:{}", user);
+ }
+ return mybatisUserMapper.selectByPrimaryKey(user.getId());
+ }
+
+ @Override
+ public Integer delete(MybatisUser user) {
+ return mybatisUserMapper.deleteByPrimaryKey(user);
+ }
+
+ @Override
+ public MybatisUser findById(Long id) {
+ return mybatisUserMapper.selectByPrimaryKey(id);
+ }
+
+ @Override
+ public MybatisUser findByName(String name) {
+ return mybatisUserMapper.findByName(name);
+ }
+
+ @Override
+ public List findAll() {
+ return mybatisUserMapper.selectAll();
+ }
+
+ @Override
+ public List findMybatisUserByPage(Integer pageNum, Integer pageSize) {
+ PageHelper.startPage(pageNum, pageSize);
+ return mybatisUserMapper.selectAll();
+ }
+}
diff --git a/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/utils/MyMapper.java b/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/utils/MyMapper.java
new file mode 100644
index 0000000..8fea828
--- /dev/null
+++ b/spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/utils/MyMapper.java
@@ -0,0 +1,7 @@
+package com.xkcoding.springbootdemomybatis.utils;
+
+import tk.mybatis.mapper.common.Mapper;
+import tk.mybatis.mapper.common.MySqlMapper;
+
+public interface MyMapper extends Mapper, MySqlMapper {
+}
diff --git a/spring-boot-demo-mybatis/src/main/resources/application.yml b/spring-boot-demo-mybatis/src/main/resources/application.yml
index 3aa2478..d2c9878 100644
--- a/spring-boot-demo-mybatis/src/main/resources/application.yml
+++ b/spring-boot-demo-mybatis/src/main/resources/application.yml
@@ -3,6 +3,7 @@ server:
context-path: /demo
spring:
datasource:
+ # 启动时自动运行的 SQL 文件
schema: classpath:init-sql/schema.sql
continue-on-error: true
druid:
@@ -45,4 +46,19 @@ spring:
stat:
log-slow-sql: true
slow-sql-millis: 5000
- merge-sql: true
\ No newline at end of file
+ merge-sql: true
+#mybatis 配置
+mybatis:
+ type-aliases-package: com.xkcoding.springbootdemomybatis.model
+ mapper-locations: classpath:mapper/*.xml
+#通用 Mapper 配置
+mapper:
+ not-empty: false
+ identity: MYSQL
+ mappers: com.xkcoding.springbootdemomybatis.utils.MyMapper
+#PageHelper 配置
+pagehelper:
+ helper-dialect: mysql
+ reasonable: true
+ support-methods-arguments: true
+ params: count=countSql
\ No newline at end of file
diff --git a/spring-boot-demo-mybatis/src/main/resources/init-sql/schema.sql b/spring-boot-demo-mybatis/src/main/resources/init-sql/schema.sql
index 568908d..0ddc300 100644
--- a/spring-boot-demo-mybatis/src/main/resources/init-sql/schema.sql
+++ b/spring-boot-demo-mybatis/src/main/resources/init-sql/schema.sql
@@ -10,10 +10,10 @@ CREATE TABLE `mybatis_user` (
`tel` varchar(11) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of boot_user
-- ----------------------------
-INSERT INTO `mybatis_user` VALUES ('1', 'klay', '13799008800', '2016-06-27 00:01:39');
-INSERT INTO `mybatis_user` VALUES ('2', 'Tome', '18988991234', '2016-06-27 00:35:28');
+INSERT INTO `mybatis_user` VALUES (1, 'klay', '13799008800', '2017-11-13 16:04:39');
+INSERT INTO `mybatis_user` VALUES (2, 'Tome', '18988991234', '2017-11-13 16:13:28');
diff --git a/spring-boot-demo-mybatis/src/main/resources/logback-spring.xml b/spring-boot-demo-mybatis/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..1a28f34
--- /dev/null
+++ b/spring-boot-demo-mybatis/src/main/resources/logback-spring.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+ 【xkcoding】%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
+
+
+
+
+
+
+
+
+ ${user.dir}/logs/log/mybatis-demo.%d.log
+
+
+ 【xkcoding】%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %msg%n
+
+
+
+
+
+ ERROR
+ ACCEPT
+ DENY
+
+
+
+
+ ${user.dir}/logs/error/mybatis-demo.%d.error
+
+
+ 【xkcoding】%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %msg%n
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-boot-demo-mybatis/src/main/resources/mapper/MybatisUserMapper.xml b/spring-boot-demo-mybatis/src/main/resources/mapper/MybatisUserMapper.xml
new file mode 100644
index 0000000..c8c09c5
--- /dev/null
+++ b/spring-boot-demo-mybatis/src/main/resources/mapper/MybatisUserMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file