您的位置:

Springboot使用Mybatis

一、Spring Boot使用Mybatis配置

首先需要在maven中添加mybatis依赖:

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

接着,在application.properties文件中配置Mybatis相关属性:

mybatis.config-location=classpath:mybatis-config.xml
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.example.demo.domain

其中,mybatis.config-location指定了Mybatis的配置文件路径,mybatis.mapper-locations指定了Mybatis的Mapper文件路径,mybatis.type-aliases-package指定了实体类的包路径。

二、Spring Boot使用Mybatis连接MySQL

在使用Mybatis之前,需要先配置MySQL的连接信息。可以在application.properties中设置相关属性:

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=123456

其中,spring.datasource.url指定了MySQL的连接地址和端口号,spring.datasource.driver-class-name指定了MySQL的驱动名,spring.datasource.username和spring.datasource.password指定了MySQL连接的用户名和密码。

接着,我们就可以编写Mapper映射文件和Dao层代码进行MySQL数据库的操作了。

三、Spring Boot使用Mybatis存null数据

在操作MySQL数据库时,如果某个字段的值为null,那么Mybatis在执行插入或更新操作时会将该字段的值设置为NULL,而不是直接忽略该字段。如果不希望将null值存入数据库中,可以在Mapper映射文件中使用sqlProvider方式指定非空字段。

<insert id="insertUser" parameterType="User">
    <selectKey keyProperty="id" resultType="int" order="AFTER">
        SELECT LAST_INSERT_ID()
    </selectKey>
    insert into user
    <set>
        <if test="name != null">
            name = #{name},
        </if>
        <if test="age != null">
            age = #{age},
        </if>
        <if test="address != null">
            address = #{address},
        </if>
    </set>
</insert>

在上述代码中,<if>标签中判断了字段的值是否为null,如果不为null则插入该字段,否则不插入。

四、Spring Boot使用Mybatis缓存

Mybatis默认开启了一级缓存,无需任何配置即可使用,但是一级缓存的作用范围只限于同一个SqlSession。对于不同的SqlSession,无法共享缓存资源。Mybatis也提供了二级缓存的功能,可以自行选择是否启用。

在application.properties中配置如下缓存属性:

# 启用缓存
mybatis.configuration.cache-enabled=true
# 指定缓存类型为Ehcache
mybatis.configuration.cache-enabled-type=EHCACHE

在Mapper映射文件的<mapper>标签中使用cache配置指定缓存,例如:

<cache eviction="FIFO" flushInterval="60000" size="512">
</cache>

其中,eviction指定了缓存的淘汰策略,flushInterval指定了缓存的刷新时间间隔,size指定了缓存容量。

五、Spring Boot使用的技术

Spring Boot结合Mybatis可以使用很多其它技术栈来实现更加完善的功能,例如:

1. Spring Boot结合FreeMarker模板引擎使用

首先需要在maven中添加FreeMarker依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

接着,在application.properties中配置FreeMarker相关属性:

spring.freemarker.template-loader-path=classpath:/templates/
spring.freemarker.suffix=.ftl

其中,spring.freemarker.template-loader-path指定了模板文件的路径,spring.freemarker.suffix指定了模板文件的后缀名。

通过在Controller中返回ModelAndView对象,就可以使用FreeMarker模板引擎来渲染页面了。

2. Spring Boot结合AOP使用

Spring Boot结合AOP可以很方便地实现类似于日志、事务等方面的功能。

首先需要在maven中添加AOP依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

接着,在需要添加切面的类上使用@Aspect注解,并定义相关的切点和通知方法即可实现AOP功能。

3. Spring Boot结合注解使用

Spring Boot结合注解可以更加简化开发过程,也更加直观。

通过在Controller中使用@RestController注解、在Mapper接口中使用@Mapper注解等方式,可以大大简化代码的编写。

六、Spring Boot使用Mybatis总结

本文对Spring Boot结合Mybatis的相关使用做了详细的阐述,包括Mybatis的配置、MySQL连接、存null数据、缓存以及结合其它技术栈使用的方法等。通过本文的学习,相信读者已经对Spring Boot如何使用Mybatis有了更加深入的了解。