SpringBoot入门学习(九)~~ 整合Mybatis

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaozhegaa/article/details/82912471

目录

 

SpringBoot整合Mybatis

一、Mybatis配置文件梳理~~分析以往的配置文件

二、SpringBoot整合Mybatis代码开发

三、进一步分析上面的配置

四、配置文件(*.xml没有在resource目录下,编译之后找不到的问题)

五、输出Mybatis sql语句


SpringBoot整合Mybatis

  • 一、Mybatis配置文件梳理~~分析以往的配置文件

从以前的配置来看

  1. 开启注解扫描 – springBoot已完成
  2. 加载配置文件+数据源 –引入DruidData已完成
  3. 配置核心配置文件路径 ——待配置
  4. 别名扫描包 — —待配置
  5. 管理映射文件 — — 待配置
  6. 扫描mapper文件接口 —— 待配置

暂时不配置事务+aop相关。

也就是说我们需要配置上面的四项内容。

针对四项配置

 

  • 二、SpringBoot整合Mybatis代码开发

1~8步骤都是常规的准备动作,

9~12才是我们真正的配置

  1. 引入Mybatis依赖

<dependencies>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
   </dependency>
   <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <optional>true</optional>
   </dependency>

   <!--druid demo-->
  
<dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid-spring-boot-starter</artifactId>
      <version>1.1.4</version>
   </dependency>

   <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
   </dependency>

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

2、引入一个User实体

@Setter@Getter@ToString

  public class User {

    private Long id;

    private String email;

    private String fullname;

    private Boolean isadmin;

    private String password;

}

3、创建数据表结构

CREATE TABLE `user` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `email` varchar(255) DEFAULT NULL,

  `fullname` varchar(255) DEFAULT NULL,

  `isadmin` tinyint(255) DEFAULT NULL,

  `password` varchar(255) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

4、写UserMapper实体接口 + 映射文件

@Repository

  public interface UserMapper {

  

  

    int deleteByPrimaryKey(Long id);

  

    int insert(User record);

  

    int insertSelective(User record);

  

    User selectByPrimaryKey(Long id);

  

    int updateByPrimaryKeySelective(User record);

  

    int updateByPrimaryKey(User record);

  

    @Select("select * from user")

    List<User> list();

}

5、引入mybatis的核心配置文件,放在resource文件夹里面

<?xml version="1.0" encoding="UTF-8"?>

  <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

   "http://mybatis.org/dtd/mybatis-3-config.dtd">

  

  <configuration>

   <settings>

      <setting name="lazyLoadingEnabled" value="false"/>

      <setting name="useGeneratedKeys" value="true"/>

      <setting name="defaultStatementTimeout" value="2000" />

      <setting name="logImpl" value="STDOUT_LOGGING" />

   </settings>

  </configuration>

 

6、编写service层 接口跟实现类

接口

public interface IUserService {

   public List<User> list();

}

实现类:

@Service

  public class UserServiceImpl implements IUserService {

   @Autowired

   private UserMapper userMapper;

  

   @Override

   public List<User> list() {

      return userMapper.list();

   }

}

7、编写controller层

@Controller

@RequestMapping("/user")

  public class UserController {

   @Autowired

   private IUserService userService;

  

   @RequestMapping("/list")

   @ResponseBody

   public List<User> list(){

      return  userService.list();

   }

}

8、编写启动类

@SpringBootApplication

  public class MybatisApplicatioin {

   public static void main(String[] args) {

      SpringApplication.run(MybatisApplicatioin.class,args);

   }

}

9、配置Mybatis核心配置文件的路径

mybatis.config-location=classpath:mybatis-config.xml

9、配置别名扫描包的路径

mybatis.type-aliases-package=com.example.demo.mybatis.domain

10、管理映射文件位置

mybatis.mapper-locations=classpath:com/example/demo/mybatis/mapper/*Mapper.xml

11、扫描mapper文件接口:这是一个注解配置,在SpringBootApplication上

@SpringBootApplication

@MapperScan("com.example.demo.mybatis.mapper")

  public class MybatisApplicatioin {

   public static void main(String[] args) {

      SpringApplication.run(MybatisApplicatioin.class,args);

   }

}

12启动项目,尝试访问/user/list即可

能够看到这个页面的,表示SpringBoot整合Mybatis成功。

说白了,啰嗦了那么多,就是在application.properties里面三个属性+@MapperScan()注解。

上述的配置,需要拥有Spring整合Mybatis基础。

  • 三、进一步分析上面的配置

1、如果mybatis的核心配置文件不需要特殊的配置,可以把

  1. 核心配置文件删除
  2. mybatis.config-location=classpath:mybatis-config.xml去掉
  3. 启动项目
效果:照样可以访问

2、如果说,在xml中不需要别名,可以把

  1. mybatis.type-aliases-package=com.example.demo.mybatis.domain
去掉
    1. 启动项目
效果:照样可以访问

3、如果说,在xml跟mapper文件放在同一个目录的情况下,可以把:

    mybatis.mapper-locations=classpath:com/example/demo/mybatis/mapper/*Mapper.xml

去掉

   启动项目

效果,照样可以访问。
也就是说,最简单最简单的整合MyBatis是直接加一个@MapperScan即可。
  • 四、配置文件(*.xml没有在resource目录下,编译之后找不到的问题)

问题描述:有时候会很坑爹出现一种情况,就是在源文件中明明有某个xml文件,但是运行的时候报文件找不到。、

       这是因为:默认情况下,resource以外的配置文件是不会加入编译的,你得手动指定加载resource之外的配置文件。

效果图:

  • 五、输出Mybatis sql语句

logging.level.全路径mapper=debug
logging.level.com.example.demo.mybatis.mapper=debug
 

 

 

在build中使用下面的配置即可:

<resources>

   <resource>

      <directory>src/main/java</directory>

      <includes>

         <include>**/*.xml</include>

      </includes>

   </resource>

  </resources>

 

再次编译,就可以了

猜你喜欢

转载自blog.csdn.net/xiaozhegaa/article/details/82912471