当前位置: 首页 > article >正文

MyBatis学习

在学习MyBatis之前我们操作数据库的时候主要流程:

  1. 创建数据库连接 DataSource
  2. 通过DataSource获取数据库连接Connection
  3. 编写要执行带?占位符的SQL语句
  4. 通过Connection及SQL创建操作指令对象Statement
  5. 替换占位符,指定要替换的数据库字段类型,占位符索引以及要替换的值
  6. 使用Statement执行SQL语句
  7. 查询操作:返回结果集ResultSet,更新操作:返回更新的数量
  8. 处理结果
  9. 释放资源

 以上操作太麻烦,所以我们学习MyBatis

什么是MyBatis?

MyBatis是一款优秀的持久化框架,用于JDBC的开发。

持久化:指的就是持久化操作层,通常指数据访问层,用来操作数据库的。

MyBatis入门

1.创建工程(IDE版本2021.1.3)

 

 2.引入依赖

<!--Mybatis 依赖包-->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.3.1</version>
		</dependency>
		<!--mysql驱动包-->
		<dependency>
			<groupId>com.mysql</groupId>
			<artifactId>mysql-connector-j</artifactId>
			<scope>runtime</scope>
		</dependency>

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<UserInfo> 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<UserInfo> 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容器中的数据,会报错

MyBatis增删查改

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<UserInfo> 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();

}

 日志:


http://www.kler.cn/a/133244.html

相关文章:

  • Java集合(Collection+Map)
  • 【星海随笔】ZooKeeper-Mesos
  • 【Conda】Windows下conda的安装并在终端运行
  • gitHub常用操作
  • AI 写作(九)实战项目二:智能新闻报道(9/10)
  • git命令提交项目
  • 麻将馆电脑计费系统,棋牌室怎么用电脑控制灯计时,佳易王计时计费系统软件下载
  • 浏览器里设置代理的作用
  • 【Linux】kernel与应用消息队列的一种设计
  • Redis篇---第七篇
  • DAC实验(DAC 输出三角波实验)(DAC 输出正弦波实验)
  • 机器人走迷宫问题
  • ubuntu18.04中代码迁移到20.04报错
  • 【数据结构】栈与队列的实现
  • webpack的安全保障是怎么做的?
  • Windows使用ssh远程连接(虚拟机)Linux(Ubuntu)的方法
  • 导航守卫有哪三种?
  • [msg_msg] corCTF2021 -- fire_of_salvation
  • vue中watch监听事件与计算属性的区别
  • Linux 环境删除Conda
  • 【网络奇遇记】我和因特网的初相遇2 —— 三种交换方式
  • DPAFNet:一种用于多模式脑肿瘤分割的残差双路径注意力融合卷积神经网络
  • 表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
  • 如何检查 Docker 和 Kubernetes 是否可以访问外部网络,特别是用于拉取镜像的仓库?
  • 【软件安装】Centos系统中安装docker容器(华为云HECS云耀服务器)
  • Python3.7+PyQt5 pyuic5将.ui文件转换为.py文件、Python读取配置文件、生成日志