码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 抽象轻松的java——mybaties


    前置工作icon-default.png?t=N7T8http://t.csdnimg.cn/RVvn4完成了前置工作后的IDEA应该是这样的

    正式进入mybaties的入门

    第一步,打开mybaties的官网文档icon-default.png?t=N7T8https://mybatis.net.cn/getting-started.html本次入门,将从XML构造SQL工厂

    第一步,创建一个XML文件,随意名字

    新建→文件→输入名词,后缀为xml

    只要后缀是xml就可以了,不要在乎图标

    将下面这段代码复制进xml中

    1. ​
    2. "1.0" encoding="UTF-8" ?>
    3. configuration
    4. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    5. "https://mybatis.org/dtd/mybatis-3-config.dtd">
    6. <configuration>
    7. <environments default="development">
    8. <environment id="development">
    9. <transactionManager type="JDBC"/>
    10. <dataSource type="POOLED">
    11. <property name="driver" value="你的数据库驱动"/>
    12. <property name="url" value="你的数据库连接"/>
    13. <property name="username" value="你的数据库用户"/>
    14. <property name="password" value="你的数据库密码"/>
    15. dataSource>
    16. environment>
    17. environments>
    18. configuration>
    19. ​

    重点在那几个中文标识,你的数据库驱动

                                            你的数据库连接

                                            你的数据库用户

                                            你的数据库密码

    上面四个,在初次使用时,绝大多数问题都是路径问题,代码层面因为有IDEA的补全,很少会出现问题的

    所以在入门的时候,请自己观察路径的写法!!!

    第一步:你的数据库驱动

    先学会找这个驱动

    看到这个mysql-connector-java-8.0.25.jar

    点击com.mysql

    点击cj

    点击jdbc

    查看到驱动的英文

    Driver,右键

    有一个复制引用——com.mysql.cj.jdbc.Driver

    将这个掩盖掉你的数据库驱动

    第二步:你的数据库连接

    在前置操作中,会有一个这个

    看见URL没,把它复制掩盖掉你的数据库连接

    第三部:你的数据库用户,你的数据库密码

    就是上面你输入的用户和密码

    完成后如图

    请保持XMl的设置的整洁性,要不然到时候找错误会非常痛苦

    请保证路径的整洁性和完整性,不要少复制,多粘贴

    例如:{}!@#这种

    进到main文件将这段代码复制进去

    1. public class main {
    2. public static void main(String[] args) throws FileNotFoundException {
    3. SqlSessionFactory build = new SqlSessionFactoryBuilder().build(new FileInputStream("你的路径引用"));
    4. try(SqlSession sqlSession = build.openSession();){
    5. System.out.println("连接成功");
    6. }
    7. }
    8. }

    进行第一次连接,如果连接成功,是不会报错的

    问题1:数据库的连接路径出问题!

    问题2:数据库的驱动路径出问题!

    问题3:XML的文件完整性出问题

    解决方法,通过工具直接复制引用

    XML的完整,把上面的XML完整的复制下来!

    或者进到myBAtis官网文档,复制——与上面我提供的最大区别是中文和英文的区别

    建议尝试的在上面三个问题中删除一点东西,再进行连接,可以通过ctrl+z撤回操作

    第一个阶段完成,通过MyBatis成功连接数据库,第二个阶段使用数据库

    第一步:新建一个包,创建一个类,专门用来获取数据库的内容(你也可以直接创建一个类)

    这个类的顺序和名字,要与你的数据库相同

    确保你的内容与数据库的列的完全一致,你可以尝试一下不同!

    @Data是辣椒框架里的内容,作用是简化代码量

    1. //
    2. // Source code recreated from a .class file by IntelliJ IDEA
    3. // (powered by FernFlower decompiler)
    4. //
    5. package com.test.entitly;
    6. public class library {
    7. int book_ID;
    8. String book_Name;
    9. double book_money;
    10. public library() {
    11. }
    12. public int getBook_ID() {
    13. return this.book_ID;
    14. }
    15. public String getBook_Name() {
    16. return this.book_Name;
    17. }
    18. public double getBook_money() {
    19. return this.book_money;
    20. }
    21. public void setBook_ID(int book_ID) {
    22. this.book_ID = book_ID;
    23. }
    24. public void setBook_Name(String book_Name) {
    25. this.book_Name = book_Name;
    26. }
    27. public void setBook_money(double book_money) {
    28. this.book_money = book_money;
    29. }
    30. public boolean equals(Object o) {
    31. if (o == this) {
    32. return true;
    33. } else if (!(o instanceof library)) {
    34. return false;
    35. } else {
    36. library other = (library)o;
    37. if (!other.canEqual(this)) {
    38. return false;
    39. } else if (this.getBook_ID() != other.getBook_ID()) {
    40. return false;
    41. } else if (Double.compare(this.getBook_money(), other.getBook_money()) != 0) {
    42. return false;
    43. } else {
    44. Object this$book_Name = this.getBook_Name();
    45. Object other$book_Name = other.getBook_Name();
    46. if (this$book_Name == null) {
    47. if (other$book_Name == null) {
    48. return true;
    49. }
    50. } else if (this$book_Name.equals(other$book_Name)) {
    51. return true;
    52. }
    53. return false;
    54. }
    55. }
    56. }
    57. protected boolean canEqual(Object other) {
    58. return other instanceof library;
    59. }
    60. public int hashCode() {
    61. int PRIME = true;
    62. int result = 1;
    63. result = result * 59 + this.getBook_ID();
    64. long $book_money = Double.doubleToLongBits(this.getBook_money());
    65. result = result * 59 + (int)($book_money >>> 32 ^ $book_money);
    66. Object $book_Name = this.getBook_Name();
    67. result = result * 59 + ($book_Name == null ? 43 : $book_Name.hashCode());
    68. return result;
    69. }
    70. public String toString() {
    71. int var10000 = this.getBook_ID();
    72. return "library(book_ID=" + var10000 + ", book_Name=" + this.getBook_Name() + ", book_money=" + this.getBook_money() + ")";
    73. }
    74. }

    没错,一个注释就可以完成上面的代码,里面有很多方法什么get,set,tostring等等方法

    你不用@Data注释,你就要手动把上面的内容打一遍了。。。

    第二步:新建一个xml文件

    将这段代码复制一下

    1. "1.0" encoding="UTF-8" ?>
    2. mapper
    3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4. "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5. <mapper namespace="目前阶段该属性随便">
    6. <select id="用来调用的名字" resultType="以什么类型返回">
    7. select * from library.book_base
    8. select>
    9. mapper>

    数据库中select是查看

    Mapper内包含了数据库的增删改查,本次以查为主

    目前阶段该属性随便

    用来调用的名字

    以什么类型返回

    第一个顾名思义:随便什么名字

    第二个名字:随便什么名字

    第三个,还记得第一步的建的那个类吗,引用它

    技巧:你可以手动输入该路径,先输入main所在的java包然后编译器会自动显示

    完成后是这样的

    把这段代码复制进第一步创建的XML中,目的引用刚刚上面设置的XML

    1. <mappers>
    2. <mapper url="file:TestMapper.xml"/>
    3. mappers>

    你会发现,这样就和官方文档的一模一样了

    注意了,file:这个代码是url的协议之一,千万不要忘记打了,很重要很重要

    补全main的代码

    1. public class main {
    2. public static void main(String[] args) throws FileNotFoundException {
    3. SqlSessionFactory build = new SqlSessionFactoryBuilder().build(new FileInputStream("mybatis-config.xml"));
    4. try(SqlSession sqlSession = build.openSession();){
    5. System.out.println("连接成功");
    6. List list = sqlSession.selectList("第二阶段的XML设置的id");//以列的形式查看
    7. list.forEach(System.out::println);//快速遍历输出
    8. }
    9. }
    10. }
    11. 第二阶段的XML设置id,替换

      运行,完美

      如果你细心的话,你会发现第一个XML与第二个XML上配置有些区别

      一个是config(配置)一个是mapper(制图者)

      上面的截图来自官网文档下面

      这个过程配上代码(main里的)

      在main类里设立一个建筑者,通过调用建筑者去建筑一个工厂,工厂可以产出无数个sqlsession

      *

      在代码层面上一遍是不可能出问题的,更多是路径问题

      例如没有打file:协议,路径多了一个些符号

      解决方法,挨个试一试

    12. 相关阅读:
      请实现一个链式的哈希表
      R2 MSE Linear Regression
      UE5修改导航网格的参数
      null 和 undefined 的区别
      Android 11.0 下拉状态栏录屏去掉弹窗直接录屏
      空数组循环会不会执行
      AI认知与科普(通识)
      【SG滤波】三阶滤波、五阶滤波、七阶滤波(Matlab代码实现)
      PDF怎么翻译成中文?这些方法值得收藏
      EPF:一种基于进化、协议感知和覆盖率引导的网络协议模糊测试框架
    13. 原文地址:https://blog.csdn.net/c_yanxin_ru/article/details/133742007
      • 最新文章
      • 沪漂五周年了:我越来越迷茫了
        Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
        MySQL-Seconds_behind_master的精度误差
        [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
        AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
        Agent OS :五种驯服不确定性的范式
        PortSwigger SQL注入LAB11
        数据库即时编译JIT
        [Begin]AI Learn Data Day 0
        深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
      • 热门文章
      • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
        奉劝各位学弟学妹们,该打造你的技术影响力了!
        五年了,我在 CSDN 的两个一百万。
        Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
        面试官都震惊,你这网络基础可以啊!
        你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
        心情不好的时候,用 Python 画棵樱花树送给自己吧
        通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
        13 万字 C 语言从入门到精通保姆级教程2021 年版
        10行代码集2000张美女图,Python爬虫120例,再上征途
      小工具 小游戏
      Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

      京公网安备 11010502049817号