十、SpringBoot-集成MyBatis

此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接
此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接
此处提供IDEA-SpringBoot-总目录链接,可查看整个项目过程其他步骤文章:点击此处跳转至总目录链接

十、SpringBoot-集成MyBatis

处理思路及开发流程如下:

目标:快速实现查询数据库中某张表数据

  1. 引用依赖,创建测试数据库
  2. 配置Generator生成工具环境
  3. 使用Generator工具生成接口、映射文件以及实体 bean
  4. 实现代码

1.引用依赖

pom.xml

<!--MyBatis 整合 SpringBoot 的起步依赖-->
<dependency>
   <groupId>org.mybatis.spring.boot</groupId>
   <artifactId>mybatis-spring-boot-starter</artifactId>
   <version>2.0.0</version>
</dependency>

Oracle和MySql根据实际情况选择

<!--Oracle起步依赖-->
<dependency>
   <groupId>com.oracle.ojdbc</groupId>
   <artifactId>ojdbc8</artifactId>
</dependency>
<!--MySQL 的驱动依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

测试数据库如下:

ERROR_CODEERROR_MESSAGE
000001信息1
000002信息2
000003信息3
000004信息4
000005信息5

2.配置Generator

创建 GeneratorMapper.xml 文件在项目根目录下,与src同级目录

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>

    <!-- 指定连接数据库的JDBC驱动包所在位置,指定到你本机的完整路径,需确保本地路径下存在该jar -->
    <classPathEntry location="Oracle驱动包ojdbc或者MySql驱动包mysql-connector-java的绝对路径地址"/>

    <!-- 配置table表信息内容体,targetRuntime指定采用MyBatis3的版本 -->
    <context id="tables" targetRuntime="MyBatis3">
        
        <!-- 抑制生成注释,由于生成的注释都是英文的,可以不让它生成 -->
        <commentGenerator>
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        
        <!-- Oracle配置数据库连接信息 -->
        <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
                        connectionURL="jdbc:oracle:thin:@//xxx.xxx.xxx.xxx:port/xxxxx"
                        userId="xxxxx"
                        password="xxxxx">
        </jdbcConnection>

	<!-- MySql配置数据库连接信息 -->
	<!--
	<jdbcConnection driverClass="com.mysql.jdbc.Driver"
                connectionURL="jdbc:mysql://xxx.xxx.xxx.xxx:port/xxxxx"
                userId="xxxxx"
                password="xxxxx">
	</jdbcConnection>
	-->

        <!-- 生成model类,targetPackage指定model类的包名, targetProject指定生成的model放在eclipse的哪个工程下面-->
        <javaModelGenerator targetPackage="com.springboot.model" targetProject="src/main/java">
            <property name="enableSubPackages" value="false" />
            <property name="trimStrings" value="false" />
        </javaModelGenerator>

        <!-- 生成MyBatis的Mapper.xml文件,targetPackage指定mapper.xml文件的包名, targetProject指定生成的mapper.xml放在eclipse的哪个工程下面 -->
        <sqlMapGenerator targetPackage="com.springboot.mapper" targetProject="src/main/java">
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>

        <!-- 生成MyBatis的Mapper接口类文件,targetPackage指定Dao接口类的包名, targetProject指定生成的Mapper接口放在eclipse的哪个工程下面 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.springboot.mapper" targetProject="src/main/java">
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>

        <!-- 数据库表名及对应的Java模型类名 -->
        <table tableName="FM_ERROR"
               domainObjectName="FmError"
               enableCountByExample="false"
               enableUpdateByExample="false"
               enableDeleteByExample="false"
               enableSelectByExample="false"
               selectByExampleQueryId="false"/>
    </context>
</generatorConfiguration>

pom.xml

<!--mybatis Generator 代码自动生成插件-->
<plugin>
   <groupId>org.mybatis.generator</groupId>
   <artifactId>mybatis-generator-maven-plugin</artifactId>
   <version>1.3.6</version>
   <configuration>
      <!--配置文件的位置-->
      <configurationFile>GeneratorMapper.xml</configurationFile>
      <verbose>true</verbose>
      <overwrite>true</overwrite>
   </configuration>
</plugin>

3.使用Generator工具生成接口、映射文件以及实体 bean

选择Maven操作窗口,执行生成工具
在这里插入图片描述
项目目录下对应文件夹生成文件即可
在这里插入图片描述
FmError.java

映射数据库中的字段

public class FmError {
    private String errorCode;

    private String errorMessage;

    public String getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(String errorCode) {
        this.errorCode = errorCode;
    }

    public String getErrorMessage() {
        return errorMessage;
    }

    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }
}

FmErrorMapper.java

默认4种类型6个方法,其中带Selective的方法,SQL会根据传参是否为空选择性地执行

public interface FmErrorMapper {
    int deleteByPrimaryKey(String errorCode);

    int insert(FmError record);

    int insertSelective(FmError record);

    FmError selectByPrimaryKey(String errorCode);

    int updateByPrimaryKeySelective(FmError record);

    int updateByPrimaryKey(FmError record);
}

FmErrorMapper.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="com.springboot.mapper.FmErrorMapper">
  <resultMap id="BaseResultMap" type="com.springboot.model.FmError">
  <!--包含id及其他result,id必须是库表主键字段-->
    <id column="ERROR_CODE" jdbcType="VARCHAR" property="errorCode" />
    <result column="ERROR_MESSAGE" jdbcType="VARCHAR" property="errorMessage" />
  </resultMap>
  
  <!--默认查询列-->
  <sql id="Base_Column_List">
    ERROR_CODE, ERROR_MESSAGE
  </sql>
  
  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
    select 
    <include refid="Base_Column_List" />
    from FM_ERROR
    where ERROR_CODE = #{errorCode,jdbcType=VARCHAR}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
    delete from FM_ERROR
    where ERROR_CODE = #{errorCode,jdbcType=VARCHAR}
  </delete>
  <insert id="insert" parameterType="com.springboot.model.FmError">
    insert into FM_ERROR (ERROR_CODE, ERROR_MESSAGE)
    values (#{errorCode,jdbcType=VARCHAR}, #{errorMessage,jdbcType=VARCHAR})
  </insert>
  <insert id="insertSelective" parameterType="com.springboot.model.FmError">
    insert into FM_ERROR
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="errorCode != null">
        ERROR_CODE,
      </if>
      <if test="errorMessage != null">
        ERROR_MESSAGE,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="errorCode != null">
        #{errorCode,jdbcType=VARCHAR},
      </if>
      <if test="errorMessage != null">
        #{errorMessage,jdbcType=VARCHAR},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.springboot.model.FmError">
    update FM_ERROR
    <set>
      <if test="errorMessage != null">
        ERROR_MESSAGE = #{errorMessage,jdbcType=VARCHAR},
      </if>
    </set>
    where ERROR_CODE = #{errorCode,jdbcType=VARCHAR}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.springboot.model.FmError">
    update FM_ERROR
    set ERROR_MESSAGE = #{errorMessage,jdbcType=VARCHAR}
    where ERROR_CODE = #{errorCode,jdbcType=VARCHAR}
  </update>
</mapper>

4.实现代码

application.properties

#根据实际情况选择连接信息
#Oracle连接配置
spring.datasource.driverClassName=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@//xxx.xxx.xxx.xxx:port/xxxxx
spring.datasource.username=xxxxx
spring.datasource.password=xxxxx
#MySql连接配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://xxx.xxx.xxx.xxx:port/xxxxx
spring.datasource.username=xxxxx
spring.datasource.password=xxxxx

FmErrorService.java

public interface FmErrorService {

    // 获取错误信息
    FmError qryMessage(String id);
}

FmErrorServiceImpl.java

@Service // 业务层注解
public class FmErrorServiceImpl implements FmErrorService {

    @Autowired // 注入依赖,自动装配
    private FmErrorMapper fmErrorMapper;

    @Override
    public FmError qryMessage(String id) {
        return fmErrorMapper.selectByPrimaryKey(id);
    }
}

FmErrorController.java

@Controller
public class FmErrorController {

    @Autowired
    private FmErrorService fmErrorService;

    @RequestMapping(value = "/show")

    @ResponseBody
    public Object show(){
        FmError fmError = fmErrorService.qryMessage("000001");
        return fmError;
    }
}

直到这步之后还需要配置一些注解,有三种方式:

  1. 在mapper类中配置@Mapper,此注解作用是mybatis 自动扫描数据持久层的映射文件及 DAO 接口的关系
@Mapper
public interface FmErrorMapper {
  1. 在Application 上加@MapperScan(“com.abc.springboot.mapper”)
@MapperScan("com.springboot.mapper")
public class Application {
  1. 在Application 上加@MapperScan(basePackages = “com.springboot.mapper”)
@MapperScan(basePackages = "com.springboot.mapper")
public class Application {

因为 SpringBoot 不能自动编译接口映射的 xml 文件,因此有两种解决方式:

  1. 手动在 pom 文件中指定
<!--Mybatis 的 xml 映射文件编译到指定目录-->
<resources>
   <resource>
      <directory>src/main/java</directory>
      <includes>
         <include>**/*.xml</include>
      </includes>
   </resource>
</resources>
  1. 将映射文件直接放到 resources/mapper 目录下,并在application.properties中添加配置,指定xml资源位置,
# 指定 Mybatis 映射文件的路径
mybatis.mapper-locations=classpath:mapper/*.xml
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值