SpringBoot整合Mybatis(暑期学习第15天)

在yml文件中添加数据库的相关数据,也就是之前spring创建工厂所需的datasource,写上本地数据库的相关数据。

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

创建一个Book类来封装数据库里面的数据,创建getset方法,和重写tostring方法

public class Book {
    private Integer id;
    private String type;
    private String name;
    private String description;

    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", type='" + type + '\'' +
                ", name='" + name + '\'' +
                ", description='" + description + '\'' +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}

在创建一个dao层来添加一些方法,本次实验就添加了一个根据id查数据的方法,并且要在dao层的接口上添加@Mapper来让spring扫描到并知道这是一个dao层。

@Mapper
public interface BookDao {
    @Select("select * from tbl_book where id = #{id}")
    public Book getById(Integer id);
}

再在测试类中自动注入Dao层接口,并且调用里面的getById方法查询数据库中的数据:

@SpringBootTest
class SpringBoot0202MybatisApplicationTests {

    @Autowired
    private BookDao bookDao;

    @Test
    void contextLoads() {
        System.out.println(bookDao.getById(2));
    }

}

查询结果如图所示:

 第二种调用Mybatis plus 来连接数据库

首先要导入mybatis的依赖坐标版本根据自己相关依赖选择:

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3</version>
        </dependency>

我们重新创建了一个springnboot模块,复制了上一个模块的框架,保留了dao层以及封装的实体类,但是跟mybatis不一样的是在dao层的接口中不需要自己添加方法只需要继承BaseMapper<Book>(这里的Book还是之前我们创建的封装实体类)

@Mapper
public interface BookDao extends BaseMapper<Book> {
}

再去测试类中调用dao层接口,调用方法的时候就会发现,mybatis plus已经帮我们写好了方法,我们直接能拿来调用。

@SpringBootTest
class SpringBoot0203MybatisPlusApplicationTests {

    @Autowired
    private BookDao bookDao;
    @Test
    void contextLoads() {
        System.out.println(bookDao.selectById(2));
    }

}

测试结果发现存在报错Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table 'db1.book' doesn't exist

 这个报错原因就是mybatis自动帮我们映射了,但是映射的表名是book但是我们在自己的数据库的表名跟这个自动映射的不一样,所以我们要将映射的改为我们自己数据库的表明,这里可以在yml里面配置(这里映射的为book,但是本地表明为tbl_book所以我们添加一个前缀就可以,这样映射的数据表名前面都会添加tbl_):

mybatis-plus:
  global-config:
    db-config:
      table-prefix: tbl_

再次测试是否成功查询,查询成功:

总结:

mybatis plus是我们国人大牛开发的巨好用的框架,多学习一下里面的内容,使用起来非常方便。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值