MyBatis入门

作者: 每天起床都想摆 | 来源:发表于2021-12-27 18:38 被阅读0次

    MyBatis

    快速入门

    简介&操作步骤

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

    持久层

    • 负责将数据保存到数据库的那一层代码
    • JavaEE三层架构
      • 表现层:页面展示
      • 业务层:逻辑处理
      • 持久层:数据持久化

    框架

    • 框架就是一个半成品软件,是一套可重用的, 通用的,软件基础代码模型
    • 在框架的基础之上构建软件编写更加高效,规范,通用,可扩展

    查询user表中所有数据

    1. 创建user表,添加数据
    2. 创建模块,导入坐标
    3. 编写MyBatis核心配置文件,替换连接信息,解决硬编码问题
    4. 编写SQL映射文件,统一管理SQL语句,解决硬编码问题
    5. 编码
      • 定义POJO类
      • 加载MyBatis核心配置文件,获取SqlSessionFactory对象
      • 获取SqlSession对象,执行SQL语句
      • 释放资源

    1.创建user表,添加数据

    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, '李四', '234', '女', '天津');
    INSERT INTO tb_user VALUES (3, '王五', '11', '男', '西安');
    

    2.创建Maven模块,导入坐标

    <!--porn.xml所需的坐标信息-->
    
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>
    
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.26</version>
        </dependency>
    
        <!-- https://mvnrepository.com/artifact/junit/junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>test</scope>
        </dependency>
        <!-- 添加slf4j日志api -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.20</version>
        </dependency>
        <!-- 添加logback-classic依赖 -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
        <!-- 添加logback-core依赖 -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.3</version>
        </dependency>
        
        <!--该坐标用来解决报错:无法解析插件 org.apache.maven.plugins:maven-deploy-plugin:2.7-->
        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.4.3</version>
        </dependency>
    </dependencies>
    

    并将logback需要的配置文件logback.xml放到src-main-resources下

    <!--logback.xml-->
    
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <!--
            CONSOLE :表示当前的日志信息是可以输出到控制台的。
        -->
        <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>[%level] %blue(%d{HH:mm:ss.SSS}) %cyan([%thread]) %boldGreen(%logger{15}) - %msg %n</pattern>
            </encoder>
        </appender>
    
        <logger name="com.javaweb" level="DEBUG" additivity="false">
            <appender-ref ref="Console"/>
        </logger>
    
    
        <!--
          level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF
         , 默认debug
          <root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。
          -->
        <root level="DEBUG">
            <appender-ref ref="Console"/>
        </root>
    </configuration>
    

    3.编写MyBatis核心配置文件,替换连接信息,解决硬编码问题

    <!--mybatis-config.xml-->
    <?xml version="1.0" encoding="UTF-8" ?>
    <!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&amp;serverTimezone=UTC"/>
                    <property name="username" value="root"/>
                    <property name="password" value="ZZXQJL@0916.com"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <!--加载sql映射文件-->
            <mapper resource="UserMapper.xml"/>
        </mappers>
    </configuration>
    

    4.编写SQL映射文件,统一管理SQL语句,解决硬编码问题

    <!--在resources目录下创建UserMapper.xml和java目录下创建对应的实体类User.class-->
    
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <!--
        namespace   名称空间
        id  SQL语句的唯一标识,不可重复
        resultType  对应返回结果的数据类型
    -->
    <mapper namespace="test">
        <select id="selectAll" resultType="User">
            select * from tb_user;
        </select>
    </mapper>
    

    映射文件命名规范:实体类名Mapper.xml,例如实体类名为Count,则映射文件规范命名为CountMapper.xml

    此时的sql语句可能报红报错,完成IDEA数据库连接可解决此问题

    5.编码

    public class User {
        private Integer id;
        private String username;
        private String password;
        private String gender;
        private String addr;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer 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 + '\'' +
                    '}';
        }
    }
    

    MyBatis核心测试类

    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import java.io.InputStream;
    import java.util.List;
    
    public class MyBatisDemo {
        public static void main(String[] args) throws Exception{
            //1.加载核心配置文件,获取SqlSessionFactory对象
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    
            //2.获取SqlSession对象,用它来执行sql(Ctrl+Alt+V快速生成返回对象)
            SqlSession sqlSession = sqlSessionFactory.openSession();
    
            //3.执行sql,参数填写:名称空间.语句唯一标识
            List<User> users = sqlSession.selectList("test.selectAll");
    
            System.out.println(users);
    
            //4.释放资源
            sqlSession.close();
        }
    }
    

    此时项目结构应该为

    image.png

    相关文章

      网友评论

        本文标题:MyBatis入门

        本文链接:https://www.haomeiwen.com/subject/fzgyqrtx.html