1.本次课程目标
使用 SpringBoot+SpringMVC+MyBatis+Thymeleaf 整合实现对数据库中的商品表的CRUD的操作。
2.实现步骤
2.1 准备商品表
DROP DATABASE goodsDB;
CREATE DATABASE goodsDB;
USE goodsdb;
CREATE TABLE goods(
id VARCHAR(10) PRIMARY KEY,
NAME VARCHAR(40) NOT NULL,
price DOUBLE,
image VARCHAR(40)
);
INSERT INTO goods VALUES(‘001’,‘水果酸奶’,38.8,‘images/1.jpg’);
INSERT INTO goods VALUES(‘002’,‘水果奶酪’,88.8,‘images/3.jpg’);
INSERT INTO goods VALUES(‘003’,‘甜点’,16.8,‘images/4.jpg’);
INSERT INTO goods VALUES(‘004’,‘奶茶’,28.8,‘images/6.jpg’);
SELECT * FROM goods;
2.2 创建SpringBoot 项目,项目名:spring-boot-mybatis-thyleaf
2.3 打开pom.xml文件,加入连接池以及修改jdbc版本
<java.version>1.8</java.version>
org.springframework.boot
spring-boot-starter-thymeleaf
org.springframework.boot
spring-boot-starter-web
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.4
mysql
mysql-connector-java
5.1.38
runtime
com.alibaba
druid
1.1.10
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
2.4 打开application.properties全局配置文件,设置相关属性配置
#服务器端口
server.port=8080
#------------jdbc的datasource配置---------------
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:///goodsDB?characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=
#---------------mybatis配置------------
mybatis.type-aliases-package=com.xz.pojo
#指定mapper.xml文件的路径
mybatis.mapper-locations=classpath:/mapper/*.xml
#--------------thymeleaf配置--------
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.servlet.content-type=text/html
2.5 编写实体类
@AllArgsConstructor
@NoArgsConstructor
@Data
@ToString
public class Goods {
private String id;
private String name;
private double price;
private String image;
}
2.6 编写持久层mapper
2.6.1 在src/main/com/xz/mapper下创建GoodsMapper的接口
public interface GoodsMapper {
List selectAll();
}
2.6.2 在resources下创建mapper文件夹,然后在mapper下创建GoodsMapper.xml
@RequestMapping("/getGoods")
public String getGoods(Model model){
List<Goods> list=goodsService.getGoodsAll();
model.addAttribute("list",list);
return "goodsList";
}
}
2.9 编写Thymeleaf页面视图层
在src/mian/resources/templates下创建goodsList.html
商品编号 | 商品名称 | 商品价格 | 商品图片 |
3.声明式事务
1.SpringBoot提供了非常方便的事务操作,通过@Transactional注解就可以实现事务,非常方便快捷。
2.@Transactional可以作用于接口、接口方法、类以及类方法上。当作用于类上时,该类的所有 public方法将都具有该类型的事务属性。
3.1常用配置
参 数 名 称 功 能 描 述
readOnly 该属性用于设置当前事务是否为只读事务,设置为true表示只读,false则表示可读写,默认值为false。
propagation 该属性用于设置事务的传播行为。
isolation 该属性用于设置底层数据库的事务隔离级别。
3.2 业务层service (带上声明式事务控制)
@Service
public class GoodsServiceImpl implements GoodsService {
@Autowired
GoodsMapper goodsMapper;
//查询方式,设置为只读事务
@Transactional(readOnly = true)
@Override
public List getGoodsAll() {
return goodsMapper.selectAll();
}
//增删改,开启事务设置
@Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.DEFAULT)
@Override
public int delGoods(String id) {
return goodsMapper.deleteById(id);
}
}
4.SpringBoot 日志记录
4.1 SpringBoot 日志分类
Spring Boot 即支持log4j 也支持logback 日志记录。
logback 是log4j的扩展,性能要比log4j高很多。
Spring Boot默认的日志框架Logback。
4.2 logback 日志记录实现
4.2.1.在spring Boot 中如果引入了spring-boot-starter或spring-boot-starter-web启动器,
其中包含了spring-boot-starter-logging启动器,里面有Logback的jar包 。
4.2.2.只需要在src/main/resources目录下有一个logback.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
${LOG_HOME}/server.%d{yyyy-MM-dd}.log 30
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
10MB
<!-- 日志输出级别 -->
<root level="debug">
<appender-ref ref="Stdout" />
<appender-ref ref="RollingFile" />
</root>
<!--日志异步到数据库 -->
<!-- <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
日志异步到数据库
<connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
连接池
<dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
<driverClass>com.mysql.jdbc.Driver</driverClass>
<url>jdbc:mysql://127.0.0.1:3306/databaseName</url>
<user>root</user>
<password>root</password>
</dataSource>
</connectionSource>
</appender> -->
4.2.3 日志记录效果
4.3 log4J 日志记录实现
4.3.1 打开pom.xml文件,去掉logback的坐标,引入log4j的坐标。
4.3.3 日志记录效果