Spring Boot整合持久层技术

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

<?xml version="1.0" encoding="UTF-8" ?> select * from goods 2.7 编写业务层service 2.7.1 编写service接口 GoodsService public interface GoodsService { List getGoodsAll(); } 2.7.2 编写service实现类 GoodsServiceImpl @Service public class GoodsServiceImpl implements GoodsService { @Autowired GoodsMapper goodsMapper; @Override public List getGoodsAll() { return goodsMapper.selectAll(); } } 2.8 编写控制器Controller @Controller public class GoodsController { @Autowired GoodsService goodsService;
@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

Title
商品编号商品名称商品价格商品图片
2.10 启动类 @SpringBootApplication @MapperScan("com.xz.mapper") public class SpringBootMybatisThymeleafApplication { public static void main(String[] args) { SpringApplication.run(SpringBootMybatisThymeleafApplication.class, args); } }

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的坐标。

org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-logging log4j log4j 1.2.17 org.slf4j slf4j-api org.slf4j slf4j-log4j12 4.3.2在src/main/resources目录下放有一个log4j.properties文件 log4j.rootCategory=ERROR, CONSOLE ,LOGFILE log4j.logger.com.xz.mapper=DEBUG log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%C %p %m %n log4j.appender.LOGFILE=org.apache.log4j.FileAppender log4j.appender.LOGFILE.File=D:/my.log log4j.appender.LOGFILE.Append=true log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout log4j.appender.LOGFILE.layout.ConversionPattern=%C %m %L %n

4.3.3 日志记录效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值