码农知识堂 - 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. 相关阅读:
      [算法周训 1]二叉树与链表训练1
      解决安装 RabbitMQ 安装不成功的问题
      01-工具篇-windows与linux文件共享
      神经网络数据融合特征提取,神经网络 信息融合
      Week 7 Latent Variable Models and Expectation Maximization
      你可能忘了的HTML知识 建议看看
      Intel汇编-内联汇编使用全局变量
      MySql分区
      Efficient Join Order Selection Learning with Graph-based Representation
      基于SaaS平台的iHRM管理系统测试学习
    13. 原文地址:https://blog.csdn.net/c_yanxin_ru/article/details/133742007
      • 最新文章
      • 攻防演习之三天拿下官网站群
        数据安全治理学习——前期安全规划和安全管理体系建设
        企业安全 | 企业内一次钓鱼演练准备过程
        内网渗透测试 | Kerberos协议及其部分攻击手法
        0day的产生 | 不懂代码的"代码审计"
        安装scrcpy-client模块av模块异常,环境问题解决方案
        leetcode hot100【LeetCode 279. 完全平方数】java实现
        OpenWrt下安装Mosquitto
        AnatoMask论文汇总
        【AI日记】24.11.01 LangChain、openai api和github copilot
      • 热门文章
      • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
        奉劝各位学弟学妹们,该打造你的技术影响力了!
        五年了,我在 CSDN 的两个一百万。
        Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
        面试官都震惊,你这网络基础可以啊!
        你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
        心情不好的时候,用 Python 画棵樱花树送给自己吧
        通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
        13 万字 C 语言从入门到精通保姆级教程2021 年版
        10行代码集2000张美女图,Python爬虫120例,再上征途
      Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
      正则表达式工具 cron表达式工具 密码生成工具

      京公网安备 11010502049817号