Browse Source

spring boot 集成 mybatis、通用 Mapper、PageHelper、Druid、logback 完成

v-1.5.x
yangkai.shen 7 years ago
parent
commit
c37f5a3451
12 changed files with 321 additions and 4 deletions
  1. +16
    -0
      spring-boot-demo-mybatis/pom.xml
  2. +2
    -0
      spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/SpringBootDemoMybatisApplication.java
  3. +80
    -0
      spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/controller/MybatisUserController.java
  4. +11
    -0
      spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/mapper/MybatisUserMapper.java
  5. +27
    -0
      spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/model/MybatisUser.java
  6. +23
    -0
      spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/service/MybatisUserService.java
  7. +68
    -0
      spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/service/impl/MybatisUserServiceImpl.java
  8. +7
    -0
      spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/utils/MyMapper.java
  9. +17
    -1
      spring-boot-demo-mybatis/src/main/resources/application.yml
  10. +3
    -3
      spring-boot-demo-mybatis/src/main/resources/init-sql/schema.sql
  11. +51
    -0
      spring-boot-demo-mybatis/src/main/resources/logback-spring.xml
  12. +16
    -0
      spring-boot-demo-mybatis/src/main/resources/mapper/MybatisUserMapper.xml

+ 16
- 0
spring-boot-demo-mybatis/pom.xml View File

@@ -20,19 +20,35 @@
<properties>
<mybatis.starter.version>1.3.1</mybatis.starter.version>
<druid.starter.version>1.1.5</druid.starter.version>
<mapper.version>1.1.1</mapper.version>
<pagehelper.version>1.1.0</pagehelper.version>
</properties>

<dependencies>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.starter.version}</version>
</dependency>
<!--druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.starter.version}</version>
</dependency>
<!--通用 Mapper-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>${mapper.version}</version>
</dependency>
<!--PageHelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper.version}</version>
</dependency>
</dependencies>

<build>


+ 2
- 0
spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/SpringBootDemoMybatisApplication.java View File

@@ -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) {


+ 80
- 0
spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/controller/MybatisUserController.java View File

@@ -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<MybatisUser> 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<MybatisUser> findAll() {
return mybatisUserService.findAll();
}

@GetMapping("/page")
public List<MybatisUser> findByPage(@RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "5") Integer pageSize) {
return mybatisUserService.findMybatisUserByPage(pageNum, pageSize);
}
}

+ 11
- 0
spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/mapper/MybatisUserMapper.java View File

@@ -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> {
MybatisUser findByName(@Param("name") String name);
}

+ 27
- 0
spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/model/MybatisUser.java View File

@@ -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;
}

+ 23
- 0
spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/service/MybatisUserService.java View File

@@ -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<MybatisUser> userList);

MybatisUser update(MybatisUser user);

Integer delete(MybatisUser user);

MybatisUser findById(Long id);

MybatisUser findByName(String name);

List<MybatisUser> findAll();

List<MybatisUser> findMybatisUserByPage(Integer pageNum, Integer pageSize);
}

+ 68
- 0
spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/service/impl/MybatisUserServiceImpl.java View File

@@ -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<MybatisUser> 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<MybatisUser> findAll() {
return mybatisUserMapper.selectAll();
}

@Override
public List<MybatisUser> findMybatisUserByPage(Integer pageNum, Integer pageSize) {
PageHelper.startPage(pageNum, pageSize);
return mybatisUserMapper.selectAll();
}
}

+ 7
- 0
spring-boot-demo-mybatis/src/main/java/com/xkcoding/springbootdemomybatis/utils/MyMapper.java View File

@@ -0,0 +1,7 @@
package com.xkcoding.springbootdemomybatis.utils;

import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

public interface MyMapper<T> extends Mapper<T>, MySqlMapper<T> {
}

+ 17
- 1
spring-boot-demo-mybatis/src/main/resources/application.yml View File

@@ -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
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

+ 3
- 3
spring-boot-demo-mybatis/src/main/resources/init-sql/schema.sql View File

@@ -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');

+ 51
- 0
spring-boot-demo-mybatis/src/main/resources/logback-spring.xml View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<conversionRule conversionWord="clr"
converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>

<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>【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}
</pattern>
</layout>
</appender>

<appender name="fileLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--输出路径-->
<fileNamePattern>${user.dir}/logs/log/mybatis-demo.%d.log</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>【xkcoding】%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %msg%n</pattern>
</encoder>
</appender>

<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<!--滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--输出路径-->
<fileNamePattern>${user.dir}/logs/error/mybatis-demo.%d.error</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>【xkcoding】%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %msg%n</pattern>
</encoder>
</appender>

<logger name="com.xkcoding.springbootdemomybatis.mapper" level="TRACE"/>

<root level="info">
<appender-ref ref="consoleLog"/>
<appender-ref ref="fileLog"/>
<appender-ref ref="fileErrorLog"/>
</root>
</configuration>

+ 16
- 0
spring-boot-demo-mybatis/src/main/resources/mapper/MybatisUserMapper.xml View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xkcoding.springbootdemomybatis.mapper.MybatisUserMapper">
<resultMap id="mybatisUserMap" type="com.xkcoding.springbootdemomybatis.model.MybatisUser">
<id property="id" column="id"/>

<result property="name" column="name"/>
<result property="tel" column="tel"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
</resultMap>

<select id="findByName" resultMap="mybatisUserMap">
SELECT * FROM mybatis_user WHERE name LIKE #{name}
</select>

</mapper>

Loading…
Cancel
Save