前言:
大家好,我是良辰丫,从今天开始我们就要进入MyBatis的学习了,请君与我一起操纵数据库,MyBatis到底是什么呢?我们慢慢往下瞧! ! !
个人主页:良辰针不戳
所属专栏:javaEE进阶篇之框架学习
励志语句:生活也许会让我们遍体鳞伤,但最终这些伤口会成为我们一辈子的财富。
期待大家三连,关注,点赞,收藏。
作者能力有限,可能也会出错,欢迎大家指正。
愿与君为伴,共探Java汪洋大海。
在学习MyBatis的用法之前我们首先要对MyBatis的基本概念有一定的了解,要不然学习起来会变得一团糟.
MyBatis的好处?
我们已经有了JDBC,为什么还要学习MyBatis呢?
- JDBC比较繁琐,步骤很多,没进行一次不同的数据库操作,都需要把繁琐的步骤写一次.
- MyBatis本质上还是调用 JDBC,但是它简化了很多工作,MyBatis在创建的时候大家会感到很繁琐,但是创建好了,大家用的时候会发现是真的香.
接下来我们就要开始实现我们的第一个MyBatis的查询功能,刚开始学起来可能有点困难,因为创建的时候比较繁琐,不要慌哈,多操作几次就可以了,熟能生巧.
我们首先需要建库建表,这是实现我们查询功能的前提.
-- 创建数据库
drop database if exists student;
create database student DEFAULT CHARACTER SET utf8mb4;
-- 使用数据库
use student;
-- 创建学生表
drop table if exists stu;
create table stu(
id int primary key auto_increment,
name varchar(20) not null,
age int
)default charset 'utf8mb4';
我们先在里面添加一条数据
insert into stu values(null,'张三',18);
创建SSM项目就是在创建Spring Boot的基础上,Spring Boot相当于一个容器,它内置了很多框架,创建Spring Boot的过程我就不做详细描述,我们在Spring Boot的文章中已经做了详细的描述,大家可以去看一下.
我们需要去选择我们的MyBatis框架,注意,我们还需要选择我们的数据库,我们使用的是mysql,因此选择mysql.
此时我们虽然创建好了SSM项目,但是我们直接运行回报错,异常退出,因为我们的SSM项目没有配置数据库相关的信息,因此我们找不到数据库,所以会报错.
我们在Spring Boot里面学习了两种格式的配置,因此两种配置都可以,使用其中一种即可,在本篇文章中,我们主要使用properties配置.
yml配置文件
spring:
datasource:
url: jdbc:mysql://localhost:3306/mycnblog?characterEncoding=utf8&useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
properties配置文件
spring.datasource.url=jdbc:mysql://localhost:3306/mycnblog?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
直接加到配置文件中,在后续的内容中,我们以properties配置文件进行讲解.
spring.datasource.url=jdbc:mysql://localhost:3306/student?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
# 注意!写你自己的密码
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# mybatis xml 配置 MyBatis 中的 XML 路径
mybatis.mapper-locations=classpath:mybatis/*Mapper.xml
接下来我们创几个包,为什么要创包呢?我们从现在开始要严格按照项目的要求进行操作,写代码,各个层次里面放不同类型的代码.
entity里面放的是实体类,我们先放一个实体类
package com.example.demo.entity;
import lombok.Data;
@Data
public class Stu {
private int id;
private String name;
private int age;
}
我们先创建一个接口.
package com.example.demo.mapper;
import com.example.demo.entity.Stu;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface StuMapper {
Stu getStuId(@Param("id") Integer id);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace是命名空间,表示实现哪个接口-->
<mapper namespace="com.example.demo.mapper.StuMapper">
<select id="getStuId" resultType="com.example.demo.entity.Stu">
select * from stu where id=${id}
</select>
</mapper>
package com.example.demo.service;
import com.example.demo.entity.Stu;
import com.example.demo.mapper.StuMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class StuService {
@Autowired
private StuMapper stuMapper;
public Stu getUserById(Integer id) {
return stuMapper.getStuId(id);
}
}
package com.example.demo.controller;
import com.example.demo.entity.Stu;
import com.example.demo.service.StuService;
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 Controller {
@Autowired
private StuService stuService;
@RequestMapping("/id")
public Stu getUserById(Integer id) {
if (id == null) return null;
return stuService.getUserById(id);
}
}
下面是我们完整的目录结构.
我们通过浏览器进行访问id为1的数据,访问成功,说明我们的程序成功了.