什么是MyBatis?
MyBatis是一款优秀的持久层框架,支持自定义sql,存储过程以及高级映射。
MyBatis就是可以让我们更加简单的实现程序和数据库之间进行交互的一个工具。可以让我们更加简单的操作和读取数据库的内容。
MyBatis的官网:https://blog.mybatis.org/
为什么要学习MyBatis?
后端开发的工作:后端程序、数据库
而这两个部分的重要部分就要依赖 数据库连接工具,而连接工具有哪些呢?比如JDBC、MyBatis。
关于JDBC的知识内容:http://t.csdn.cn/PJnQY
而相比较与JDBC手动挡,MyBatis就是自动挡!
第一个MyBatis查询
1.构建好数据库
2.在项目中添加MyBatis框架
这个分为两种情况,在老项目/新项目 中添加
直接加入依赖的方法:
<!-- 添加 MyBatis 框架 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<!-- 添加 MySQL 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
<scope>runtime</scope>
</dependency>
推荐:使用EditStarters插件:
http://t.csdn.cn/DE3qW //点击链接查看插件使用技巧
选择MyBatis Framework 和 MySQL Driver
新项目的话直接在创建之初添加MyBatis Framework 和 MySQL Driver即可
3.配置 MyBatis 中的 XML 路径
如上图,项目添加MyBatis之后运行错误是正常的,所以我们要 设置四个操作,也就是配置数据库的四个链接信息。如下面代码所示。
# 数据库连接配置
spring:
datasource:
# URL分别代表地址,端口号,数据库名称,编码格式,是否加密
url: jdbc:mysql://localhost:3306/blog?characterEncoding=utf8&useSSL=false
#账号 和 密码
username: root
password: root
# 使用 mysql-connector-java 是 5.x 之前的使用的是“com.mysql.jdbc.Driver”
# 如果是大于 5.x使用的是“com.mysql.cj.jdbc.Driver”。
driver-class-name: com.mysql.cj.jdbc.Driver
# 配置MyBatis的xml
# MyBatis 的两个组成部分:① 接口(包含表的操作方法) ② xml 实现接口
# mysql通过sql语句来操作数据库,但是java与sql不兼容,使用类实现的话是比较麻烦的,还带用字符串
# 而 MyBatis 实现了一个 xml 的技术,来实现 接口 的内容。而接口则是让 java 来进行调用
# 配置 mybatis xml 的文件路径,在 resources/mapper 创建所有表的 xml 文件---告诉系统哪些文件是 MyBatis 要使用的
mybatis:
mapper-locations: classpath:mapper/*Mapper.xml
注意 xml 的配置要和文件路径相对应,如下图所示:
4. 添加业务代码
用户请求控制器,然后参数校验,校验没问题,就可以通过Service调用用户持久层来操作数据库。
文件夹内容的创建:
写功能:
1.写一个实体类(entity文件夹下)
package com.example.demo.entity;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class Userinfo implements Serializable {
private final long serializableId = 1L;
private int id;
private String username;
private String password;
private String photo; // 头像
private LocalDateTime createTime;
private LocalDateTime updateTime;
private int state;
}
2.构建Mapper层的代码实现
①创建Interface
②创建xml
③实现Service
package com.example.demo.service;
import com.example.demo.entity.Userinfo;
import com.example.demo.mapper.UserinfoMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserinfoService {
@Autowired
private UserinfoMapper userinfoMapper;
public Userinfo getUserById(Integer id){
return userinfoMapper.getUserInfoById(id);
}
}
④实现Controller
注意:通常URL只使用小写,单词较多可以使用 -(中划线) 或者 _ (下划线)
package com.example.demo.controller;
import com.example.demo.entity.Userinfo;
import com.example.demo.service.UserinfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user")
public class UserinfoController {
@Autowired
UserinfoService userinfoService;
@RequestMapping("/get-userinfo-by-id")
public Userinfo getUserinfoById(Integer id){
if (id==null) return null;
return userinfoService.getUserById(id);
}
}