【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 ...
随机推荐
- phpstorm+xdebug+mvc
前一段时间自己琢磨出来,今天又给忘了,还去t00ls发帖.... 写到这里备忘 拿这个yxcms举例子 版本: yxcms1.2.1 源码:http://pan.baidu.com/s/1pJM1CP ...
- 2019 GIAC-全球互联网架构大会课件
百度云:https://pan.baidu.com/s/1Lt40UTP3hCIVS7LhPl2bKw密码:ovrh
- 【Redis】分布式Session
一.问题引出 1.1 Session的原理 1.2 问题概述 二.解决方案 三.代码实现-使用Token代替Session 3.1 Service 3.2 TokenController 一.问题引出 ...
- Aop动态代理和cglib
一般我们使用Aop对象时,常用动态代理模式,即是采用映射一个相同的类在此基础上进行前置后置操作. 动态代理多是采用原类实现父类接口,然后动态代理一个和原类相同的双胞胎兄弟类来实现映射. 父类 publ ...
- JavaFX WebView and WebEngine Tutorial教程
JavaFX WebView JavaFX WebView is a mini browser that is called as an embedded browser in JavaFX appl ...
- SQL Server 对接MySQL 数据库
1.在SQL SERVER服务器上安装MYSQL ODBC驱动; 驱动下载地址:http://dev.mysql.com/downloads/connector/odbc/ 2.安装好后,在管理工具- ...
- C# 调用 python3
1.C# 调用python 本质上是使用命令行运行python 1.1 C# 使用命令行 program.cs using System; using System.Diagnostics; usin ...
- nginx location if 的匹配规则
cation匹配命令 ~ #波浪线表示执行一个正则匹配,区分大小写~* #表示执行一个正则匹配,不区分大小写^~ #^~表示普通字符匹配,不是正则匹配.如果该选项匹配,只匹配该选 ...
- 将pandas的DataFrame数据写入MySQL数据库 + sqlalchemy
将pandas的DataFrame数据写入MySQL数据库 + sqlalchemy import pandas as pd from sqlalchemy import create_engine ...
- APIO2009 抢掠计划 Tarjan DAG-DP
APIO2009 抢掠计划 Tarjan spfa/DAG-DP 题面 一道\(Tarjan\)缩点水题.因为可以反复经过节点,所以把一个联通快中的所有路口看做一个整体,缩点后直接跑\(spfa\)或 ...