在学习MyBatis之前我们操作数据库的时候主要流程:
以上操作太麻烦,所以我们学习MyBatis
MyBatis是一款优秀的持久化框架,用于JDBC的开发。
持久化:指的就是持久化操作层,通常指数据访问层,用来操作数据库的。
1.创建工程(IDE版本2021.1.3)



2.引入依赖
-
-
org.mybatis.spring.boot -
mybatis-spring-boot-starter -
2.3.1 -
-
-
-
com.mysql -
mysql-connector-j -
runtime -
3.创建yml文件(MyBatis_test是数据库名,可以自行修改)
- spring:
- datasource:
- url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
- username: root
- password: 123456
- driver-class-name: com.mysql.cj.jdbc.Driver
3.开始创作
1)创建数据库数据表(我用的是mysqlWorkbench)

2).创建一个UserInfo对象
- package com.example.demo.model;
-
- import lombok.Data;
-
- import java.util.Date;
-
- @Data
- public class UserInfo {
- private Integer id;
- private String username;
- private String password;
- private Integer age;
- private Integer gender;
- private String phone;
- private Integer deleteFlag;
- private Date createTime;
- private Date updateTime;
- }
3).创建mapper
- package com.example.demo.mapper;
-
- import com.example.demo.model.UserInfo;
- import org.apache.ibatis.annotations.Mapper;
- import org.apache.ibatis.annotations.Select;
- import org.springframework.stereotype.Component;
-
- import java.util.List;
-
- @Mapper
- public interface UerInfoMapper
- {
- @Select("SELECT * FROM mybatis_test.userinfo")
- List
selectAll(); -
-
- }
4).测试
- package com.example.demo.controller;
-
- import com.example.demo.mapper.UerInfoMapper;
- import com.example.demo.model.UserInfo;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import java.util.List;
- @RestController
- public class UserInfroController {
- @Autowired
- private UerInfoMapper uerInfoMapper;
- @RequestMapping("/selectAll")
- public List
selectAll() - {
- return uerInfoMapper.selectAll();
- }
- }
5).运行结果
注意
Mybatis的持久层接⼝规范⼀般都叫XxxMapper
创建数据表时,表名/字段名全都要写
@Mapper注解:表⽰是MyBatis中的Mapper接
• 程序运⾏时,框架会⾃动⽣成接⼝的实现类对象(代理对象),并给交Spring的IOC容器管理
• @Select注解:代表的就是select查询,也就是注解对应⽅法的具体实现内容.
1.在mapper文件中右击后点击generate

2.创建test

3.设置test
4.加入日志,和注解
注意一定要加上 @SpringBootTest注解,不然test中拿不到spring容器中的数据,会报错
- package com.example.demo.mapper;
-
- import com.example.demo.model.UserInfo;
- import org.apache.ibatis.annotations.*;
- import org.springframework.stereotype.Component;
-
- import java.util.List;
-
- @Mapper
- public interface UerInfoMapper
- {
- //查询全部
- @Select("SELECT * FROM mybatis_test.userinfo")
- List
selectAll(); - //查询某一个#相当于一个变量,相当于jdbc中预编译中的?
- @Select("SELECT * FROM userinfo where id=#{userId}")
- UserInfo selectOne(@Param("userId")Integer id);//重命名
- //增
- @Insert("insert into userinfo (username, password, age, gender, phone) values(\"zhaoliu\",\"zhaoliu\",19,1,\"18700001234\")")
- Integer insert(UserInfo userInfo);
- //删
- @Delete("delete from userinfo where id=2")
- void delete();
- //改
- @Update("update userinfo set username='zhangsan' where id=1")
- void UpdateOne();
-
- }
日志:
