参考官网mybatis.org/spring,找到Spring Boot菜单选项.基于菜单项找到MyBatis启动依赖,一定要设置版本,Spring Boot 中没有设置 MyBatis 的版本(否则pom.xml文件会报错)
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.2.1
我们添加了 MyBatis 依赖以后,Spring 框架启动时会对 MyBatis 进行自动配置。例如 SqlSessionFactory 工厂对象的创建。
在application.properties中对MyBatis进行配置
其中#log的内容是日志
配置 MyBatis 中的 sql 日志的输出:(com.cy 为我们写的项目的根包)
spring.datasource.url=jdbc:mysql:///dbgoods?serverTimezone=GMT%2B8&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=rootmybatis.configuration.default-statement-timeout=30
mybatis.configuration.map-underscore-to-camel-case=true#log
logging.level.com.cy=debug
drop database if exists dbgoods;
create database dbgoods default character set utf8;
use dbgoods;
create table tb_goods(
id bigint primary key auto_increment,
name varchar(100) not null,
remark text,
createdTime datetime not null
)engine=InnoDB;
insert into tb_goods values (null,'java','very good',now());
insert into tb_goods values (null,'mysql','RDBMS',now());
insert into tb_goods values (null,'Oracle','RDBMS',now());
insert into tb_goods values (null,'java','very good',now());
insert into tb_goods values (null,'mysql','RDBMS',now());
insert into tb_goods values (null,'Oracle','RDBMS',now());
insert into tb_goods values (null,'java','very good',now());
insert into tb_goods values (null,'mysql','RDBMS',now());
insert into tb_goods values (null,'Oracle','RDBMS',now());
insert into tb_goods values (null,'java','very good',now());
insert into tb_goods values (null,'mysql','RDBMS',now());
insert into tb_goods values (null,'Oracle','RDBMS',now());
package com.cy.pj.goods.dao;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
/**
* DAO:数据访问对象
* GoodsDao:商品表对应的数据访问对象
* @Mapper 注解用于描述数据层接口,由MyBatis框架定义,通过此注解描述的接口,
* 系统底层会为其创建实现类,并且会创建其实现类对象,然后交由Spring管理
*/
@Mapper
public interface GoodsDao {
/**
* 基于id执行商品数据的删除操作
* @param id
* @return 删除的行数
*/
@Delete("delete from tb_goods where id = #{id}")
int deleteById(Integer id);
}
其中:@Mapper 是由 MyBatis 框架中定义的一个描述数据层接口的的注解(所有的注解只起到一个描述性的作用),用于告诉 Spring 框架此接口的实现由 MyBatis 创建,并将其实现类对象存储到 Spring 容器.
@SpringBootTest
public class GoodsDaoTests {
@Autowired
private GoodsDao goodsDao;//实现类从哪里来
@Test
public void testDeleteById() {
int rows=goodsDao.deleteById(10);
System.out.println("rows="+rows);
}
}