【SpringBoot + MyBatis】快速入门
【SpringBoot + MyBatis】快速入门
- 0. 前言
- 1. 创建数据库
- 2. 导入依赖
- 2. 创建实体类
- 3. 创建Mapper接口类
- 4. 编写Mapper的xml配置文件
- 5. 配置数据源和Mybatis
- 6. 将Mapper注册到容器
- 方法1:Mapper扫描
- 方法2: 在Mapper接口类上添加注解`@Mapper`
- 7. 编写测试类
- 8. 多表查询
- 8.1 一对一关系
0. 前言
整个项目的目录结构如下:在创建的时候推荐跟下图保持一致,避免因为配置文件中路径错误导致项目启动失败。

1. 创建数据库
create database mybatis;//创建名为learn_java的数据库
use mybatis;//使用创建的数据库
//创建用户表
CREATE TABLE `tb_user` (`id` int(11) NOT NULL auto_increment,`username` varchar(32) NOT NULL COMMENT '用户名称',`birthday` datetime default NULL COMMENT '生日',`sex` char(1) default NULL COMMENT '性别',`address` varchar(256) default NULL COMMENT '地址',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
// 插入表信息
insert into `tb_user`(`id`,`username`,`birthday`,`sex`,`address`) values (41,'老王','2018-02-27 17:47:08','男','北京'),(42,'小二王','2018-03-02 15:09:37','女','北京金燕龙'),(43,'小二王','2018-03-04 11:34:34','女','北京金燕龙'),(45,'传智播客','2018-03-04 12:04:06','男','北京金燕龙'),(46,'老王','2018-03-07 17:37:26','男','北京'),(48,'小马宝莉','2018-03-08 11:44:00','女','北京修正');
2. 导入依赖
<properties><java.version>1.8java.version><project.build.sourceEncoding>UTF-8project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding><spring-boot.version>2.6.13spring-boot.version>properties><dependencies><dependency><groupId>org.mybatis.spring.bootgroupId><artifactId>mybatis-spring-boot-starterartifactId><version>2.2.2version>dependency><dependency><groupId>org.projectlombokgroupId><artifactId>lombokartifactId><optional>trueoptional>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-webartifactId><exclusions>
<exclusion><groupId>org.apache.logging.log4jgroupId><artifactId>log4j-apiartifactId>exclusion>exclusions>dependency><dependency><groupId>mysqlgroupId><artifactId>mysql-connector-javaartifactId><version>5.1.40version>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-testartifactId><scope>testscope>dependency>dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-dependenciesartifactId><version>${spring-boot.version}version><type>pomtype><scope>importscope>dependency>dependencies>dependencyManagement>
2. 创建实体类
@Data
public class User {private Integer id;private String username;private Date birthday;private String sex;private String address;
}
3. 创建Mapper接口类
public interface UserMapper {/*保存新用户*/void saveUser(User user);/*** 查询所有用户* @return*/List<User> findAll();
}
4. 编写Mapper的xml配置文件
DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sf.mybatisstart.mapper.UserMapper"><insert id="saveUser" parameterType="User">insert into tb_user( username, sex, address)values (#{username}, #{sex}, #{address})insert><select id="findAll" resultType="User">SELECT * FROM tb_user;select>
mapper>
5. 配置数据源和Mybatis
在application.yaml文件中添加配置:
mybatis:mapper-locations: classpath:mappers/*Mapper.xml# 注册实体类type-aliases-package: com.sf.mybatisstart.domainconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplspring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8username: rootpassword: xxxxx
6. 将Mapper注册到容器
这里有两种方法,推荐使用方法1,比较方便。
方法1:Mapper扫描
在SpringBoot启动类上面添加注解@MapperScan("com.sf.mybatisstart.mapper")
@SpringBootApplication
@MapperScan("com.sf.mybatisstart.mapper")
public class MyBatisStartApplication {public static void main(String[] args) {SpringApplication.run(MyBatisStartApplication.class, args);}
}
如果有多个不同的包需要扫描,也可以像下面示例的进行多包扫描:
@MapperScans({@MapperScan("com.test.*.mapper"),@MapperScan("com.hello.*.mapper")
})
方法2: 在Mapper接口类上添加注解@Mapper
@Mapper
public interface UserMapper {void saveUser(User user);List<User> findAll();
}
7. 编写测试类
@SpringBootTest
class MyBatisStartApplicationTests {@Autowiredprivate UserMapper userMapper;@Autowiredprivate DataSource dataSource;@Testvoid testDataSource() throws SQLException {System.out.println(dataSource.getConnection());}@Testvoid findAllUser() {List<User> all = userMapper.findAll();System.out.println(all);}}
这里建议先测试testDataSource()方法,看能否连接上数据库,如果连接不上,对数据库的CRUD肯定也会报错。
findAllUser()方法的执行结果如下:

8. 多表查询
案例:每一个用户user对象有多个账户account,即用户>账户是1对多的关系。而一个账户account只属于一个user,即账户>用户是1对1关系,
8.1 一对一关系
首先我们要更新User类,在里面添加账户属性。
public class User {private Integer id;private String username;private String birthday;private String sex;private String address;// 【新增】一个用户有多个账户private List<Account> accounts;}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
