• ① MyBatis使用入门,解决IDEA中Mapper映射文件警告。


    在这里插入图片描述

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
    个人主页:.29.的博客
    学习社区:进去逛一逛~

    在这里插入图片描述



    • MyBatis,一款优秀的持久层框架,用于简化 JDBC 的操作。
    • 持久层:负责将数据保存到数据库的代码。

    • JDBC 缺点:
      • 硬编码
      • 操作繁琐

    硬编码直接在代码中 注册驱动、获取连接;设置SQL语句;

    操作繁琐需要 手动设置参数;手动封装结果集;

    JDBC 示例:

    public class Demo04 {
        public static void main(String[] args) throws ClassNotFoundException, SQLException {
            //加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //驱动管理器,输入URL,用户名,密码
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/fruitdb?useSSL=false&useUnicode=true&CharacterEncoding=utf-8", "root", "Deng07112003");
    
            String sql = "select * from t_fruit";//硬编码设置sql语句,查询全部
    
            PreparedStatement pstm = connection.prepareStatement(sql);
    
            //执行查询,返回结果集
            ResultSet rs = pstm.executeQuery();
    
            List<Fruit> list = new ArrayList<>();//创建集合,利用泛型声明存放类型为Fruit对象
            while(rs.next()){                    //利用循环,遍历查询到的每一行信息
                //将每一行中,每一列的信息都记录下来
                //rs对象的get方法中,可以填充列的位置,也可以填充列名来指定
                int fid = rs.getInt(1);
                String fname = rs.getString("fname");
                int price = rs.getInt(3);
                int fcount = rs.getInt("fcount");
                String remark = rs.getString(5);
                ///将每一行的信息都存放进Fruit对象
                Fruit fruit = new Fruit(fid,fname,price,fcount,remark);
                list.add(fruit);//再用集合存放
            }
            //关闭资源
            rs.close();
            pstm.close();
            connection.close();
    
            list.forEach(System.out::println);
        }
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    ⚪MyBatis使用


    1. 准备操作的数据库表

    create database mybatis;
    use mybatis;
    
    drop table if exists tb_user;
    
    create table tb_user(
    id int primary key auto_increment,
    username varchar(20),
    password varchar(20),
    gender char(1),
    addr varchar(30)  
    );
    
    insert into tb_user values(1, '张三', '123', '男', '北京');
    insert into tb_user values(2, '李四', '456', '男', '上海');
    insert into tb_user values(3, '王麻子', '789', '女', '广州');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    2. 创建工程,导入mybatis坐标

        <dependencies>
            
            <dependency>
                <groupId>org.mybatisgroupId>
                <artifactId>mybatisartifactId>
                <version>3.5.6version>
            dependency>
    
            
            <dependency>
                <groupId>mysqlgroupId>
                <artifactId>mysql-connector-javaartifactId>
                <version>8.0.28version>
            dependency>
    
    
        dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    3. MyBatis核心配置文件

    在这里插入图片描述

    
    DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    
                    <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&CharacterEncoding=utf-8&serverTimezone=GMT%2B8"/>
                    <property name="username" value="root"/>
                    <property name="password" value="abc123"/>
                dataSource>
            environment>
        environments>
    
        <mappers>
            
            <mapper resource="UserMapper.xml"/>
        mappers>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    4. 依据表结构,构建实体类

    package com.java.pojo;
    
    /**
     * @author .29.
     * @create 2024-03-12 11:47
     */
    public class User {
        private int id;
        private String username;
        private String password;
        private String gender;
        private String addr;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String getGender() {
            return gender;
        }
    
        public void setGender(String gender) {
            this.gender = gender;
        }
    
        public String getAddr() {
            return addr;
        }
    
        public void setAddr(String addr) {
            this.addr = addr;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", username='" + username + '\'' +
                    ", password='" + password + '\'' +
                    ", gender='" + gender + '\'' +
                    ", addr='" + addr + '\'' +
                    '}';
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65

    5. 编写SQL映射文件(Mapper.xml)

    映射文件根据操作的数据命名,通常以Mapper结尾。

    注意:映射文件需要在MyBatis核心配置文件中配置好才能被加载使用!

    在这里插入图片描述

    
    DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    
    <mapper namespace="test">
        <select id="selectAll" resultType="com.java.pojo.User">
            
            select * from tb_user;
        select>
    mapper>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    6. 获取sqlSession对象,操作数据。

    /**
     * @author .29.
     * @create 2024-03-12 12:02
     */
    public class mybatisDemo {
        public static void main(String[] args) throws IOException {
            //1. 加载mybatis配置文件,获取SqlSessionFactory对象
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    
            //2. 获取SqlSession对象去执行SQL
            SqlSession sqlSession = sqlSessionFactory.openSession();
    
            //3. 执行SQL语句
            //传入Mapper映射文件中SQL语句的 "命名空间+id"
            List<User> users = sqlSession.selectList("test.selectAll");
    
            System.out.println(users);
    
            //释放资源
            sqlSession.close();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    测试输出结果

    [User{id=1, username='张三', password='123', gender='男', addr='北京'}, User{id=2, username='李四', password='456', gender='男', addr='上海'}, User{id=3, username='王麻子', password='789', gender='女', addr='广州'}]
    
    • 1



    ⚪解决IDEA中映射文件警告

    • 原因:IDEA与数据库未建立连接,不识别表信息
    • 解决方式:配置IDEA与MySQL数据库的连接

    🚀步骤

    在这里插入图片描述


    👇👇


    在这里插入图片描述

    点击OK即可完成连接!




    在这里插入图片描述

  • 相关阅读:
    大一html5期末大作业 :基于html实现传统文化网页设计题材
    Python 实现12306抢票脚本
    工资短信-模板参考
    网络协议:应用层
    Pandas 数据可视化
    mongodb开启副本集功能
    rhel8防火墙firewalld操作
    亚马逊测评自养号,如何进行系统性的学习?
    Day2讲课习题题解
    Python实现的《芳华》WordCloud词云+LDA主题模型
  • 原文地址:https://blog.csdn.net/ebb29bbe/article/details/136659671