• 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.引入依赖

    1. org.mybatis.spring.boot
    2. mybatis-spring-boot-starter
    3. 2.3.1
    4. com.mysql
    5. mysql-connector-j
    6. runtime

    3.创建yml文件(MyBatis_test是数据库名,可以自行修改)

    1. spring:
    2. datasource:
    3. url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
    4. username: root
    5. password: 123456
    6. driver-class-name: com.mysql.cj.jdbc.Driver

     3.开始创作

    1)创建数据库数据表(我用的是mysqlWorkbench)

    2).创建一个UserInfo对象

     

    1. package com.example.demo.model;
    2. import lombok.Data;
    3. import java.util.Date;
    4. @Data
    5. public class UserInfo {
    6. private Integer id;
    7. private String username;
    8. private String password;
    9. private Integer age;
    10. private Integer gender;
    11. private String phone;
    12. private Integer deleteFlag;
    13. private Date createTime;
    14. private Date updateTime;
    15. }

    3).创建mapper

    1. package com.example.demo.mapper;
    2. import com.example.demo.model.UserInfo;
    3. import org.apache.ibatis.annotations.Mapper;
    4. import org.apache.ibatis.annotations.Select;
    5. import org.springframework.stereotype.Component;
    6. import java.util.List;
    7. @Mapper
    8. public interface UerInfoMapper
    9. {
    10. @Select("SELECT * FROM mybatis_test.userinfo")
    11. List selectAll();
    12. }

     4).测试

    1. package com.example.demo.controller;
    2. import com.example.demo.mapper.UerInfoMapper;
    3. import com.example.demo.model.UserInfo;
    4. import org.springframework.beans.factory.annotation.Autowired;
    5. import org.springframework.stereotype.Controller;
    6. import org.springframework.web.bind.annotation.RequestMapping;
    7. import org.springframework.web.bind.annotation.RestController;
    8. import java.util.List;
    9. @RestController
    10. public class UserInfroController {
    11. @Autowired
    12. private UerInfoMapper uerInfoMapper;
    13. @RequestMapping("/selectAll")
    14. public List selectAll()
    15. {
    16. return uerInfoMapper.selectAll();
    17. }
    18. }

    5).运行结果

     

    注意

    Mybatis的持久层接⼝规范⼀般都叫XxxMapper

    创建数据表时,表名/字段名全都要写
    @Mapper注解:表⽰是MyBatis中的Mapper接
    • 程序运⾏时,框架会⾃动⽣成接⼝的实现类对象(代理对象),并给交Spring的IOC容器管理
    • @Select注解:代表的就是select查询,也就是注解对应⽅法的具体实现内容.
     

     单元测试

    1.在mapper文件中右击后点击generate

     2.创建test

     

     3.设置test

     

     4.加入日志,和注解

     

    注意一定要加上 @SpringBootTest注解,不然test中拿不到spring容器中的数据,会报错

    MyBatis增删查改

    1. package com.example.demo.mapper;
    2. import com.example.demo.model.UserInfo;
    3. import org.apache.ibatis.annotations.*;
    4. import org.springframework.stereotype.Component;
    5. import java.util.List;
    6. @Mapper
    7. public interface UerInfoMapper
    8. {
    9. //查询全部
    10. @Select("SELECT * FROM mybatis_test.userinfo")
    11. List selectAll();
    12. //查询某一个#相当于一个变量,相当于jdbc中预编译中的?
    13. @Select("SELECT * FROM userinfo where id=#{userId}")
    14. UserInfo selectOne(@Param("userId")Integer id);//重命名
    15. //增
    16. @Insert("insert into userinfo (username, password, age, gender, phone) values(\"zhaoliu\",\"zhaoliu\",19,1,\"18700001234\")")
    17. Integer insert(UserInfo userInfo);
    18. //删
    19. @Delete("delete from userinfo where id=2")
    20. void delete();
    21. //改
    22. @Update("update userinfo set username='zhangsan' where id=1")
    23. void UpdateOne();
    24. }

     日志:

  • 相关阅读:
    TypeScript 函数与以及类的使用
    Electron+Vue3整合-开发时整合-全部ts开发 + 一条命令启动vue3和electron两个服务
    mobaxterm x11 转发Ubuntu mac
    【遗传算法】求解TSP问题
    Centos GCC 版本升级
    黑猫带你学Makefile第5篇:Makefile中函数的使用
    VSCODE 插件推荐
    制作一个简单HTML游戏网页(HTML+CSS)仿龙之谷网络游戏官网
    ArcGIS_重分类
    启动mysql服务时一直提示ERROR The server quit without updating PID file
  • 原文地址:https://blog.csdn.net/weixin_62921710/article/details/134481401