SpringBoot使用·下篇(SpringBoot集成MyBatis+日志打印+MyBatis-plus)

Posted Lotus_dong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot使用·下篇(SpringBoot集成MyBatis+日志打印+MyBatis-plus)相关的知识,希望对你有一定的参考价值。

SpringBoot的使用

我们在SpringBoot使用·上篇说到了SpringBoot注解、SpringBoot集成JDBC、SpringBoot集成druid(德鲁伊)数据源和sql监控,这篇文章我们会写到SpringBoot和MyBatis的故事。

SpringBoot集成MyBatis

1.首先我们要在SpringBoot的基础上集成MyBatis的相关jar

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.4</version>
</dependency>

2.在application文件中配置数据源信息

#MyBtais配置
mybatis:
  type-aliases-package: com.cwd.springboot.bean #开启别名扫描
  mapper-locations: classpath:mapper/*Mapper.xml
  configuration:
    map-underscore-to-camel-case: true #开启驼峰转换
    cache-enabled: true #开启二级缓存

这时我们就可以使用MyBatis了。一个查询的案例奉上:

(1)创建一个t_user表

CREATE TABLE `t_user` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(10) DEFAULT NULL,
  `age` int DEFAULT NULL,
  `birthday` date DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8

(2)创建一个User的实体类,并加上相关的注解

import org.apache.ibatis.type.Alias;
import org.springframework.stereotype.Component;
import java.util.Date;

@Component
@Alias("User")
public class User {
    private Integer id;
    private String name;
    private Integer age;
    private Date birthday;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\\'' +
                ", age=" + age +
                ", birthday=" + birthday +
                '}';
    }
}

(3)创建查询的dao/mapper接口以及sql映射文件

import com.cwd.SpringBootDemo.bean.User;
import org.springframework.stereotype.Repository;

@Repository
public interface UserDao {
    User findUserById(int id);
}
<?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:接口存放路径 类路径-->
<mapper namespace="com.cwd.SpringBootDemo.dao.UserDao">

    <select id="findUserById" resultType="com.cwd.SpringBootDemo.bean.User">
        select name,age,birthday from t_user where id = #{id}
    </select>
</mapper>

(4)在主类(SpringBoot启动类)上加入一个@MapperScan的注解,它的作用是指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类。

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.cwd.SpringBootDemo.dao")
public class SpringBootDemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringBootDemoApplication.class, args);
	}

}

(5)创建调用接口的服务层

import com.cwd.SpringBootDemo.bean.User;
import com.cwd.SpringBootDemo.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
@Transactional/*开启事务管理*/
public class UserService {
    @Autowired
    UserDao userDao;

    public User findUserById(int id) {
        return userDao.findUserById(id);
    }
}

(6)测试

import com.cwd.SpringBootDemo.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class SpringBootDemoApplicationTests {

	@Autowired
	UserService userService;

	@Test
	void contextLoads() {
		System.out.println(userService.findUserById(3));
	}

}

在这里插入图片描述

日志打印

在application文件中加入日志的配置即可

#日志打印
logging:
  level:
    com.cwd.SpringBootDemo.dao: trace  #等级 只打印操作数据的接口相关日志
  file:
    name: E:\\\\log\\\\log.log #日志存放的位置

MyBatis-plus的简单搭建

关于MyBtais-plus的详细学习最好还是依赖官方文档进行MyBatis-plus官网这里我们只完成一个简单的搭建。我们还是使用上面MyBtais的类和表,MyBtais的所有东西都不用动,当然MyBatis-plus是包含了MyBatis的一切的。

1.导入MyBatis-plus的相关jar。

<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-boot-starter</artifactId>
   <version>3.4.1</version>
</dependency>

2.用dao接口类继承BaseMapper,泛型是实体类。

@Repository
public interface UserDao extends BaseMapper<User> {

}

3.如果要操作的表名和类名不一致,我们需要通过@TableName注解解决

@Component
@Alias("User")
@TableName("t_user")
public class User{
    
}

4.调用接口类,MyBatis-plus封装了很多的操作数据库的sql语句,基本都是单张表操作,直接调用即可。

@Service
@Transactional/*开启事务管理*/
public class UserService {
    @Autowired
    UserDao userDao;

    public List<User> findUser() {
        return userDao.selectList(null);
    }
}

5.测试

@SpringBootTest
class SpringBootDemoApplicationTests {

	@Autowired
	UserService userService;

	@Test
	void contextLoads() {
		System.out.println(userService.findUser());
	}

}

在这里插入图片描述

重要得事情再说一遍:MyBatis-plus的学习最好按照官网的文档学习!!!

以上是关于SpringBoot使用·下篇(SpringBoot集成MyBatis+日志打印+MyBatis-plus)的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot使用·下篇(SpringBoot集成MyBatis+日志打印+MyBatis-plus)

SpringBoot使用·下篇(SpringBoot集成MyBatis+日志打印+MyBatis-plus)

手把手教你用VUE开发后台管理系统:搭建SpringBoo 2.xt环境

Swagger2 常用使用 及 SpringBoo 整合 Swagger2

springboot启动流程ioc容器refresh过程(下篇)

springBoot学习笔记初识springBoot