(三) springBoot整合mybatis开发

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

现在大多数的java开发数据持久化使用的都是mybatis。究其原因,mybatis是一个轻量级的数据库持久化框架。

在spring框架整合mybatis中需要大量的配置文件,非常的复杂,虽然也出现了generator工具自动生成配置文件,但是前期的配置还是让我们开发人员觉得繁琐。

在springBoot中mybatis的配置可以通过注解或者是简单配置就可以实现springBoot+Mybatis的整合,下面我们看看实现的方式。

mybatis看到springBoot热度很高,自己也开发了一套配置的解决方案----mybatis-spring-boot-starter

我们不管使用配置模式还是注解模式,都需要先依赖mybatis的jar包。idea中maven配置如下

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

注解版(无配置文件):

maven的pom.xml

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

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

完整的代码段在博主的github上,感兴趣的可以去看看。

2:数据库连接配置application.yml

配置文件由.properties修改为.yml文件是由于yml是以树形格式展示的,代码看起来更整齐和易读。下面直接上配置

mybatis:
  type-aliases-package:com.example.springBootmybatis.domain.mapper
spring:
  datasource:
    data-username: root
    data-password: 123
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/hn_jxxm_monitor

3:编写mapper文件

 @Select("select *from user")
    @Results({
            @Result(property = "userName", column = "user_name")
    })
    List<UserEntity> getAllUsers();

    @Select("SELECT *FROM user WHERE id = #{id}")
    UserEntity getOne(Long id);

    @Insert("insert into user(email,password,phone,user_name,create_date) values(#{email},#{passWord},#{phone},#{userName},now())")
    void insert(UserEntity userEntity);

    @Update("update user set user_name = #{userName},email=#{email} where id = '${id}'")
    void update(UserEntity userEntity);

    @Delete("delete from user where id = #{id}")
    void delete(Long id);

增删改查都可以通过注解的方式,其中@Results表示实体类属性对应数据库表列,没有差异则不需要该注解。

接下来配置mapper文件的加载,有两种方式,①:在mapper类上添加@mapper注解,所有的都需要添加  ②:在springboot启动类上添加@MapperScan扫描注解

@SpringBootApplication
@MapperScan("com.example.springBootmybatis.domain.mapper")
public class SpringBootMybatisApplication {

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

推荐使用第二种配置,这样编码量小,而且不会发生漏掉注解的情况。

然后在调用类中注入该mapper就可以正常使用了,完整代码可以查看github。

通过配置实现(比spring中简单很多)

配置文件添加mybatis配置

mybatis:
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/*.xml
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/***
    username: root
    password: 123
    driver-class-name: com.mysql.jdbc.Driver

然后在resources文件夹下创建mapper配置文件,目录结构如下

然后编写UserMapper.xml和UserMapper.java文件。

<?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="com.example.springBootmybatis.domain.mapper.UserMapper" >
    <resultMap id="BaseResultMap" type="com.example.springBootmybatis.domain.entity.UserEntity" >
        <id column="id" property="id" jdbcType="BIGINT" />
    </resultMap>

    <sql id="Base_Column_List" >
        id
    </sql>

    <select id="getAll" resultMap="BaseResultMap"  >
        SELECT
        <include refid="Base_Column_List" />
        FROM user
    </select>
</mapper>
package com.example.springBootmybatis.domain.mapper;

import com.example.springBootmybatis.domain.entity.UserEntity;

import java.util.List;

/**
 * @ClassName UserMapper
 * @Author nothingToSay
 * @Date 2018/11/22 14:32
 **/
public interface UserMapper {

    List<UserEntity> getAll();

}

配置完成,我们启动项目访问正常。配置文件整合也是非常简单的方式。扫描mapper文件配置在启动类中@MapperScan

完整代码:代码

猜你喜欢

转载自blog.csdn.net/NothingToSay01/article/details/84335954