【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;}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部