欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

springBoot整合MyBatis(传统方式:带xml配置文件)

程序员文章站 2022-07-15 10:24:04
...

springBoot整合MyBatis(传统方式:带xml配置文件)

本文使用了IDEA工具,使用了druid数据源,整合带*Mapper.xml的方式下面开始整合。

整合主要分四个步骤:

第一步: 引入依赖

<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>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.9</version>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.0</version>
</dependency>

第二步:完成三层代码编写
Controller层: @RestController
Service层: @Service
Dao层: @Mapper

第三步: 配置
在application.properties属性配置文件中配置如下:

#配置druid数据源
spring.datasource.druid.username=root
spring.datasource.druid.password=123456
spring.datasource.druid.url=jdbc:mysql://127.0.0.1:3306/xxxx
spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.druid.initial-size=5

#mybatis.config-location=classpath:mybatis.cfg.xml
#mybatis.mapper-locations=classpath:cn.xx.mapper/*.xml
#mybatis.type-aliases-package=classpath:cn.xx.entity
#控制台打印sql语句
logging.level.cn.hangzhou.mapper=debug

第四步: 添加扫描mapper接口

在springboot启动类上添加注解:
@MapperScan(“xxxx,mapper”)

总结:

-mapper接口和mapper配置文件在同一文件夹下面时,应保证mapper接口中的方法名称和mapper配置文件中的id名称保持一致。

  • 本案例中mapper接口和mapper.xml文件在同一目录下,为了 src目录下的配置资源也能加载到classpath目录中,在pom文件的build标签上添加如下:
<resources>
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>**/*.xml</include>
        </includes>
    </resource>
</resources>

如果不添加上述配置,userMapper可以注入不到spring容器中,导致调用mapper方法报错!!!
- mapper.xml模板

<?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="cn.XXXX.UserMapper">
    <insert id="insert" useGeneratedKeys="true" keyProperty="id">
        INSERT  INTO  user
        (username,password,create_time,update_time)
        VALUES
        (#{username},#{password},#{create_time}.#{update_time})
    </insert>

    <select id="getAll" resultType="cn.XXXXX.User">
      SELECT * FROM  user
    </select>
</mapper>
  • 为了使mapper接口能够成功注入spring容器中,在springboot启动类添加如**解:
@SpringBootApplication
@MapperScan("cn.xxx.mapper")
public class SpringbootMybatis2Application {

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

**其中mybatis主配置可配可不配,mybatis主配置文件模板如下:

<?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="true"/>
        <!-- 将积极加载改为消息加载即按需加载 -->  
        <setting name="aggressiveLazyLoading" value="false"/>
        <!--lazyLoadTriggerMethods默认情况下仅仅支持自动将equals,clone,hashCode,toString这几个方法定义为延迟加载的加载触发方法。-->
        <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode"/>
    </settings>
</configuration>
相关标签: mybatis