【SpringBoot】SpringBoot/MyBatis/MySql/thymeleaf/Log4j整合工程
工程下载地址:https://files.cnblogs.com/files/xiandedanteng/MMSpringWeb20191027-1.rar
工程目录结构如图:

1.创建工程
有些网文推荐用New Spring Start Project生成工程,并把MyBatis/JDBC/MySql的依赖全选上,再加上必需的spring web和thymeleaf。我试了以下发现工程创建出来后STS总是在Build中,超过半个一个小时还没完,只好作罢。
于是从New Spring Start Project生成工程,只加上必需的spring web和thymeleaf依赖,工程自然迅速创建好了。
2.添加依赖
接下来在pom.xml中手动添加依赖项。具体如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.hy</groupId>
<artifactId>MMSpringWeb</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>MMSpringWeb</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
以上粗体部分是我手工填上去的。
3.添加log4j的配置文件
在src/main/resources下添加文件log4j.properties,内容如下:
#Output information(higher than info) to stdout and file.info/debug/error log4j.rootLogger=INFO, stdout,File #MyBatis log setting log4j.logger.tk.mybatis.simple.mapper=TRACE #Console log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n #File log4j.appender.File = org.apache.log4j.FileAppender log4j.appender.File.File = d://log4j.log log4j.appender.File.layout = org.apache.log4j.PatternLayout log4j.appender.File.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n
这一步不是关键步骤,如果跳过问题也不大。
4.在application.properties中添加数据库和MyBatis的相关配置,内容如下:
# MySql Database COnfigaration spring.datasource.url=jdbc:mysql://192.168.161.129:3306/test?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true spring.datasource.username=root spring.datasource.password=12345678 spring.datasource.driver-class-name=com.mysql.jdbc.Driver # Mapper.xml files location mybatis.mapper-locations=classpath:mapper/*.xml # Mapper.java files package mybatis.type-aliases-package=com.example.demo.mapper
MySql数据库的配置毋庸多言,一目了然。而mybatis.mapper-locations实际在src/main/resources下的mapper目录,里面放的是写sql的xml文件(XXMapper.xml); mybatis.type-aliases-package是放Mapper接口文件的类路径,XXMapper接口文件和XXMappper.xml文件是一一对应的关系。
5.在src/main/resources/mapper中书写文件EmpMapper.xml,这个里面主要写sql语句
<?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.hy.csvdld.dao.EmpMapper">
<select id="selectTenEmp" resultType="com.hy.csvdld.Entity.Emp">
select id,name,age,cdate as ctime from emp order by id limit 10
</select>
</mapper>
6.书写与EmpMapper.xml对应的接口,这种类相当于SSH时代的dao:
package com.hy.csvdld.dao;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.hy.csvdld.Entity.Emp;
@Mapper
public interface EmpMapper {
List<Emp> selectTenEmp();
}
返回数据的实体类是:
package com.hy.csvdld.Entity;
import java.text.MessageFormat;
public class Emp {
private long id;
private String name;
private int age;
private String ctime;
public Emp() {
}
public Emp(String name,int age,String ctime) {
this.name=name;
this.age=age;
this.ctime=ctime;
}
public String toString() {
Object[] arr={id,name,age,ctime};
String retval=MessageFormat.format("Employee id={0},name={1},age={2},created_datetime={3}", arr);
return retval;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getCtime() {
return ctime;
}
public void setCtime(String ctime) {
this.ctime = ctime;
}
}
7.书写服务类:
package com.hy.csvdld.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.hy.csvdld.Entity.Emp;
import com.hy.csvdld.dao.EmpMapper;
@Service
public class EmpService {
@Autowired
private EmpMapper empMapper;
public List<Emp> selectTenEmp(){
return empMapper.selectTenEmp();
}
}
8.书写控制器,里面通过service,再通过mapper从数据库取出数据准备传到页面上。
package com.hy.csvdld.ctrl;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.hy.csvdld.Entity.Emp;
import com.hy.csvdld.service.EmpService;
@Controller
public class WebCtrl {
private static Logger log = Logger.getLogger(WebCtrl.class);
@Autowired
EmpService empService;
@RequestMapping("/")
public String index(Model model) {
List<Emp> ls=empService.selectTenEmp();
log.info(ls.size());
for(Emp emp:ls) {
log.info(emp);
}
model.addAttribute("emps", ls);
log.info("进入index页");
return "index.html";
}
}
9.启动类,这个类是自动生成的,不用写:
package com.hy.csvdld;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MmSpringWebApplication {
public static void main(String[] args) {
SpringApplication.run(MmSpringWebApplication.class, args);
}
}
10.书写页面,页面在src/main/resources/templates下,:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Happy as larry</title>
</head>
<body>
<h2>SpringBoot/MyBatis/MySql/thymeleaf/Log4j整合工程</h2>
<hr/>
<table border="1px">
<caption>从数据库取出的员工信息</caption>
<tr>
<th>#</th><th>name</th><th>age</th><th>created timestamp</th>
</tr>
<tr th:each="emp:${emps}">
<td><a th:text="${emp.id}"></a></td>
<td><a th:text="${emp.name}"></a></td>
<td><a th:text="${emp.age}"></a></td>
<td><a th:text="${emp.ctime}"></a></td>
</tr>
</table>
</body>
</html>
到这里就完成了,如果有没有描叙清楚的请到工程里查吧,直接从下载工程改写也是一个不错的省事办法。
截图:

--END-- 2019年10月27日13:47:10
【SpringBoot】SpringBoot/MyBatis/MySql/thymeleaf/Log4j整合工程的更多相关文章
- Springboot集成mybatis(mysql),mail,mongodb,cassandra,scheduler,redis,kafka,shiro,websocket
https://blog.csdn.net/a123demi/article/details/78234023 : Springboot集成mybatis(mysql),mail,mongodb,c ...
- SpringBoot 使用JPA+MySQL+Thymeleaf 总结 二
SpringBoot 使用JPA+MySQL+Thymeleaf 总结 一 SpringBoot 使用JPA+MySQL+Thymeleaf 总结 二 方法一 使用原生sql查询 或者 为方法名增加 ...
- SpringBoot 使用JPA+MySQL+Thymeleaf 总结 一
SpringBoot 使用JPA+MySQL+Thymeleaf 总结 一 SpringBoot 使用JPA+MySQL+Thymeleaf 总结 二 pom引用 <?xml version=& ...
- springmvc学习总结(二) -- maven+springmvc+spring+mybatis+mysql详细搭建整合过程讲解
@_@ 写在最前 之前分享过下面这几篇: mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上)(附demo和搭建过程遇到的问题解决方法) myba ...
- maven+springmvc+spring+mybatis+mysql详细搭建整合过程讲解
转自:https://www.cnblogs.com/lmei/p/7190755.html?utm_source=itdadao&utm_medium=referral @_@ 写在最前 之 ...
- Springboot+Shiro+Mybatis+mysql
一 .shiro框架 Shiro是Apache 的一个强大且易用的Java安全框架,执行身份验证.授权.密码学和会话管理.Shiro 主要分为两个部分就是认证和授权两部分 1.Subject代表了当前 ...
- SpringBoot 使用Mybatis+MySql
pom配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http: ...
- springboot+eureka+mybatis+mysql环境下报504 Gateway Time-out
1.test环境下的数据库配置的 driver和url有问题, 在工程日志中的表现是不能打印出最新的日志,在部署前的日志能看到报错:
- spring-boot、mybatis整合
一.MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 X ...
随机推荐
- FlowPortal BPM 验证组的使用方法
1.在表单上指定验证组 2.在流程上指定验证组 3.启用多个验证组 流程审批线上设置验证组时可以设置多个验证组,多个验证组之间以分号分割,如:AAA;BBB.
- Xcode8 1 创建coreData的ManagedObject后,报错 linker command failed with exit code 1
Xcode8 1 创建coreData的ManagedObject后,报错 使用Xcode 8.1 创建coreData的ManagedObject后,报错. duplicate symbol OBJ ...
- Sharing is only supported for boot loader classes because bootstrap classpath has been appended
在idea里面运行项目,terminal里面报“Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boo ...
- 实现LAMP架构
LAMP介绍 LAM(M)P: L: linux A: apache (httpd) M: mysql, mariadb M:memcached P: php, perl, python WEB资源类 ...
- idou老师教你学Istio 26:如何使用Grafana进行可视化监控
使用Grafana插件进行监控是Istio提供的监控能力之一.Istio提供丰富的监控能力,Grafana插件在Istio对Prometheus支持的基础上,为用户提供基于网页仪表面板的可视化监控效果 ...
- php 生成gif 动图,可控制每张图时间
<?php //namespace gifCreator; /** * Create an animated GIF from multiple images */ class gifcreat ...
- Java字节码常量池深度剖析与字节码整体结构分解
常量池深度剖析: 在上一次[https://www.cnblogs.com/webor2006/p/9416831.html]中已经将常量池分析到了2/3了,接着把剩下的分析完,先回顾一下我们编译的源 ...
- 【Java 基础 实验-抽象类应用的练习】(抽象类Employee被SalariedEmployee和HourEmployee继承 , 遍历,Scanner 输出)
笔记总结: 1.Employee为抽象类,两个子类进行继承, public abstract double earning();两个子类分别实现 2.Employee[] emps[i].toStri ...
- idea 复制多条字符串
ctrl+c复制信息后可以通过ctrl+shift+v查看最近复制的字符串
- 关键字local、global和内置函数【locals、globals】
每个函数都有着自已的命名空间,叫做局部名字空间,它记录了函数的变量,包括函数的参数和局部定义的变量.每个模块拥有它自已的命名空间,叫做全局命名空间,它记录了模块的变量,包括函数.类.其它导入的模块.模 ...