<properties>
<java.version>1.8java.version>
<env>betaenv>
<scmVersion>HEADscmVersion>
<mysql.java.version>5.1.42mysql.java.version>
<guava.version>19.0guava.version>
<druid.version>1.1.11druid.version>
<pagehelper.version>1.2.3pagehelper.version>
<mybatis.version>2.0.1mybatis.version>
properties>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-devtoolsartifactId>
<scope>runtimescope>
<optional>trueoptional>
dependency>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<optional>trueoptional>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
<version>${mybatis.version}version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>${mysql.java.version}version>
<scope>runtimescope>
dependency>
<dependency>
<groupId>com.github.pagehelpergroupId>
<artifactId>pagehelper-spring-boot-starterartifactId>
<version>${pagehelper.version}version>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
<version>${druid.version}version>
dependency>
<dependency>
<groupId>com.google.code.gsongroupId>
<artifactId>gsonartifactId>
dependency>
<dependency>
<groupId>com.google.guavagroupId>
<artifactId>guavaartifactId>
<version>${guava.version}version>
dependency>
<dependency>
<groupId>org.apache.commonsgroupId>
<artifactId>commons-lang3artifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-thymeleafartifactId>
dependency>
<dependency>
<groupId>org.mybatis.generatorgroupId>
<artifactId>mybatis-generator-coreartifactId>
<version>1.3.5version>
<scope>runtimescope>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
<plugin>
<groupId>org.mybatis.generatorgroupId>
<artifactId>mybatis-generator-maven-pluginartifactId>
<version>1.3.2version>
<dependencies>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>${mysql.java.version}version>
dependency>
dependencies>
<configuration>
<configurationFile>src/main/resources/generatorConfig.xmlconfigurationFile>
<verbose>trueverbose>
<overwrite>trueoverwrite>
configuration>
plugin>
plugins>
build>
参考:SpringBoot 之集成MyBatis
在resources
目录下创建logback-spring.xml
日志文件。
参考:SpringBoot 之日志框架
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<contextName>logbackcontextName>
<property name="log.path" value="/data/logs/tomcat/spring-boot-ule"/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>debuglevel>
filter>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>
<charset>UTF-8charset>
encoder>
appender>
<appender name="FILE_ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/info.logfile>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>
<charset>UTF-8charset>
encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/info-%d{yyyy-MM-dd}.%i.logfileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MBmaxFileSize>
timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>90maxHistory>
rollingPolicy>
appender>
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.logfile>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>
<charset>UTF-8charset>
encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/error-%d{yyyy-MM-dd}.%i.logfileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MBmaxFileSize>
timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>90maxHistory>
rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERRORlevel>
<onMatch>ACCEPTonMatch>
<onMismatch>DENYonMismatch>
filter>
appender>
<logger name="com.ule.mapper" level="debug"/>
<root level="info">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE_ALL"/>
<appender-ref ref="ERROR_FILE"/>
root>
configuration>
使用layui
构建后台也没布局。
第一步:将layui
复制到static
目录下
第二步:在templates
编写html
页面
使用thymeleaf
模板引擎。
commons.html:公共模板
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head lang="en">
<meta charset="UTF-8">
<title>公共模板title>
head>
<header th:fragment="commonHeader">
<link type="text/css" rel="stylesheet" th:href="@{/layui/css/layui.css}">
<script th:src="@{/layui/layui.all.js}">script>
<div class="layui-header">
<div class="layui-logo"><a href="" style="color: #00FF00">后台管理系统a>div>
div>
header>
<menu th:fragment="commonMenu(index)">
<div class="layui-side layui-bg-black">
<div class="layui-side-scroll">
<ul class="layui-nav layui-nav-tree">
<li class="layui-nav-item layui-nav-itemed">
<dl class="layui-nav-child">
<dd th:class="${index}==0?'layui-this'"><a th:href="@{/content1}">菜单1a>dd>
<dd th:class="${index}==1?'layui-this'"><a th:href="@{/content2}">菜单2a>dd>
dl>
li>
ul>
div>
div>
menu>
<footer id="commonFooter">
<div class="layui-footer">
<p>Copyright © 1998 - 2018 YYServer. All Rights Reservedp>
div>
footer>
html>
content1.html:菜单一
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>后台管理title>
head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
<header th:replace="commons :: commonHeader">header>
<menu th:replace="commons :: commonMenu(0)">menu>
<div class="layui-body">
<div style="padding: 15px;">
<p>内容主体区域1p>
<p th:text="${name}">p>
div>
div>
<footer th:replace="commons :: #commonFooter">footer>
div>
body>
html>
content2.html:菜单二
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>后台管理title>
head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
<header th:replace="commons :: commonHeader">header>
<menu th:replace="commons :: commonMenu(1)">menu>
<div class="layui-body">
<div style="padding: 15px;">
<p>内容主体区域2p>
div>
div>
<footer th:replace="commons :: #commonFooter">footer>
div>
body>
html>
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
@Controller
@Slf4j
public class HelloController {
@RequestMapping("/content1")
public String content1(Map<String, Object> paramMap, HttpServletRequest request, HttpServletResponse response) {
paramMap.put("name", "Tom");
return "content1";
}
@RequestMapping("/content2")
public String content2(Map<String, Object> paramMap) {
return "content2";
}
}
已经在导入依赖中集成了mybatis代码生成插件,这里只需要编写代码生成需要的xml配置。
在resources
目录下创建generatorConfig.xml
文件。
参考:IDEA用Maven插件生成Mybatis的mapper、xml、bean