【每日记录之使用Mybatis(入门)】

 SpringBoot项目中使用Mybatis框架具体流程步骤

目录


一、新建项目时如何创建实体类

        实体类是POJO(Plain Ordinary Java Object,简单的Java对象)的其中一种.

       如果某个类的作用就是声明若干个属性,并且添加Setter 和 Getter方法等,并不编写其它的功能性代码,这样的类都称之POJO类,用于表示项目中需要处理的数据。

Mysql中的表字段java中的类属性
tinyint / smallint / int Integer
bigintLong
char / varchar / textString
datetimeLocalDataTime
decimalBigDecimal

使用Lombok框架

作用:可以实现在编译期自动生成一些代码包括:

          规范的Setter & Getter

          规范的hashCode 与 equals()

          重写toString()

import lombok.Data;
import java.io.Serializable;

@Data
public class Person implements Serializable {
    /*用户名*/
    private String username;

    /*用户密码*/
    private String password;

    /*手机号*/
    private Integer tel;

    /* MONEY*/
    private Long money;
}

        依赖项

        <!-- Lombok的依赖项,主要用于简化POJO类的编写 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
            <scope>provided</scope>
        </dependency>

      注意,使用lombok前记得下载相关插件,因为实体类中没有具体的get/set方法,使用时会报错 ! ! !  

二、使用Mybatis

1.简介

        解决数据库编程相关问题的框架,主要是简化了数据库编程

        依赖1: 基础依赖项的artifactId 是 : mybatis.

        依赖2: Mybatis框架虽然可以不依赖于Spring等其它框架,但是,直接使用比较麻烦,需要自行编写大量的配置,所以,通常结合Spring一起使用,需要添加的依赖项的artifactId是:mybatis-spring

        依赖3: 在Spring Boot项目中,直接添加mybatis-spring-boot-starter将包含以上依赖项,和其它必要的、常用的依赖项

        

        <!-- Mybatis整合Spring Boot的依赖项 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>
        <!-- MySQL的依赖项 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        mybatis功能: 只需要定义访问数据的抽象方法,并配置次抽象方法映射的sql语句

       

2.Mybatis中的抽象方法

        使用Mybatis框架时,访问数据的抽象方法必须定义在接口中!因为Mybatis框架是通过“接口代理”的设计模式,生成了接口的实现对象!

        public interface PersonMapper{    }

抽象方法:

         返回值类型: 如果要执行的SQL操作是增、删、改类型的,使用int作为返回值类型,表示“受影响的行数”,不建议使用void.   如果要执行的SQL操作是查询类型的,只需要保证返回值类型可以封装必要的结果即可.

        方法名称:自定义的,但推荐遵循规范,不要使用重载

        参数列表:取决于需要执行的SQL语句需要哪些参数,在抽象方法中,可以将这些参数一一列举出来,也可以将这些参数封装到自定义类中,使用自定义类作为抽象方法的参数

        抛出异常:无


抽象类中使用Mybatis框架明确明确这个接口是数据访问接口(示例):

        方法一: 在每一个接口上添加 @Mapper 注解

        方法二: 在根包下创建配置类上添加@MapperScan注解,并配置数据访问接口所在的包在根包(含子孙包)下的任何添加了@Configuration注解的类都是配置类只需要一次配置,各数据访问接口不必添加@Mapper注解

@Configuration
@MapperScan("cn.com.example.product.mapper")
public class MyBatisConfiguration {

    public MyBatisConfiguration(){
        System.out.println("创建配置类:MyBatisConfiguration");
    }

}

3.sql语句的执行

  方法一:

        在Spring Boot中,整合了Mybatis框架后,可以在数据访问接口的抽象方法上使用@Insert等注解来配置SQL语句(不推荐)

@Select("select username from person where id=#{id}")
Person selectById(int id)

不推荐原因: sql太长不易阅读 , 不便于实现特殊的配置 , 部分配置复用性低 , 不便于和DBA协作

方法二:

        使用XML文件单独配置sql语句

推荐原因: 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.com.example.product.mapper.AlbumMapper">
    <!--int select()-->
    <select id="select" resultType="int">
        SELECT count(*) FROM person
    </select>
</mapper>

在项目的配置类中声明   application.properties

# 配置Mybatis的XML文件的位置
mybatis.mapper-locations=classpath:mapper/*.xml

配置要求:

        1. 根标签<mapper>

        2. 在<mapper>标签上必须配置namespace属性,此属性的值是接口的全限定名(包名加类名)

        3. <mapper>标签内部,使用<insert> / <delete> / <update> / <select>标签来配置增 / 删 / 改 / 查的SQL语句

        4. 各配置SQL语句的标签必须配置id属性,取值为抽象方法的名称

        5. 在配置<select>标签时,必须配置resultTyperesultMap这2个属性中的其中1个,

用来判断返回的结果


4.测试

        在Spring Boot项目中,当需要编写测试时,可以在src/test/java下的根包下创建测试类,并在类中编写测试方法

        

@SpringBootTest
public class Tests {
    @Autowired
    PersonMapper mapper;

    @Test
    void testInsert() {
        Person p = new Person();
        p.setName("张三");
        p.setAge("18");
        int rows = mapper.insert(album);
        System.out.println("插入数据完成,受影响的行数=" + rows);
    }

}

5.可能存在的异常

如果此前没有正确的配置@MapperScan,在执行测试时,将出现以下错误:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'cn.tedu.csmall.product.mapper.AlbumMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

如果出现以下原因的操作错误:

1. 在XML文件中,根标签<mapper>namespace属性值配置有误

2. 在XML文件中,配置SQL语句的<insert>或类似标签的id属性值配置有误

3. 在application.properties配置文件中,没有正确的配置XML文件的位置

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 


总结

        以上就是SpringBoot项目中如何使用Mybatis框架的具体步骤以及配置和出现的异常.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hemuer~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值