美文网首页
MyBatis入门教程 初体验

MyBatis入门教程 初体验

作者: 八筒是只奶牛猫 | 来源:发表于2023-02-03 16:22 被阅读0次

    MyBatis

    简介

    什么是MyBatis

    MyBatis是一款可以通过XML配置或注解,实现面对接口建立sql和普通对象的关系,实现自定义sql的持久层框架.

    如何在项目中使用MyBatis

    引入依赖

    在maven项目中,引入对应的依赖

    
    <?xml version="1.0" encoding="UTF-8"?>
    
    <project xmlns="http://maven.apache.org/POM/4.0.0"
    
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    
            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.example</groupId>
    
        <artifactId>MyBatis</artifactId>
    
        <version>1.0-SNAPSHOT</version>
    
        <properties>
    
            <maven.compiler.source>8</maven.compiler.source>
    
            <maven.compiler.target>8</maven.compiler.target>
    
        </properties>
    
        <dependencies>
    
    <!--        mysql8驱动-->
    
            <dependency>
    
                <groupId>mysql</groupId>
    
                <artifactId>mysql-connector-java</artifactId>
    
                <version>8.0.19</version>
    
            </dependency>
    
    <!--        测试类依赖-->
    
            <dependency>
    
                <groupId>junit</groupId>
    
                <artifactId>junit</artifactId>
    
                <version>4.11</version>
    
                <scope>test</scope>
    
            </dependency>
    
    <!--        MyBatis依赖-->
    
            <dependency>
    
                <groupId>org.mybatis</groupId>
    
                <artifactId>mybatis</artifactId>
    
                <version>3.5.7</version>
    
            </dependency>
    
    <!--        log4j依赖-->
    
            <dependency>
    
                <groupId>log4j</groupId>
    
                <artifactId>log4j</artifactId>
    
                <version>1.2.17</version>
    
            </dependency>
    
        </dependencies>
    
    </project>
    
    

    配置mybatis-config.xml

    在resources根目录下创建名为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"/>
    
                    此处使用的是mysql8 需要指定时区
    
                    <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=Asia/Shanghai"/>
    
                    <property name="username" value="你自己的用户名"/>
    
                    <property name="password" value="你自己的密码"/>
    
                </dataSource>
    
            </environment>
    
        </environments>
    
        <mappers>
    
            <mapper resource="mappers/UserMapper.xml"/>
    
        </mappers>
    
    </configuration>
    
    

    创建mapper.xml

    mapper.xml是存储实际自定义SQL语句的地方,与Mapper接口的方法一一对应形成映射

    在resourcces根目录下创建mappers文件夹,用于存储各个mapper.xml

    
    <?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">
    
    <mapper namespace="com.atguigu.mybatis.mapper.UserMapper">
    
        <!--int insertUser()-->
    
        <insert id="insertUser">
    
            insert into t_user value (null , "admin", "123456", 23, "男", "123456@qq.com")
    
        </insert>
    
        <!--int updateUser()-->
    
        <update id="updateUser">
    
            update t_user set username = "张三" where id = 1
    
        </update>
    
        <!--void deleteUser()-->
    
        <delete id="deleteUser">
    
            delete from t_user WHERE id = 8
    
        </delete>
    
        <!--User getUserById()-->
    
        <!--
    
        查询功能必须设置 resultType 或 resultType
    
        resultType:设置默认的映射关系(字段名和属性名一致的情况使用)
    
        resultMap:自定义映射(字段名和属性名不一样的时候,或者一对多的情况使用)
    
        -->
    
        <select id="getUserById" resultType="com.atguigu.mybatis.pojo.User">
    
            select * from t_user where id = 1
    
        </select>
    
        <!--List<User> getAllUser();-->
    
        <select id="getAllUser" resultType="com.atguigu.mybatis.pojo.User">
    
            select * from t_user
    
        </select>
    
    </mapper>
    
    

    创建Mapper映射的接口

    MyBatis可以面对接口编程,不需要开发人员手动指定实现类

    
    package com.atguigu.mybatis.mapper;
    
    import com.atguigu.mybatis.pojo.User;
    
    import java.util.List;
    
    public interface UserMapper {
    
        /** MyBatis面向接口编程的两个一致:
    
        * 1. mapper接口映射文件namespace需要和mapper接口的全类名保持一致.
    
        * 2. 映射xml文件中的SQL语句id需要和mapper接口中的方法名一致.
    
        */
    
        /**
    
        * 添加用户信息
    
        */
    
        int insertUser();
    
        /**
    
        * update用户信息
    
        */
    
        int updateUser();
    
        /**
    
        * delete用户信息
    
        */
    
        void deleteUser();
    
        /**
    
        * 查询用户信息
    
        */
    
        User getUserById();
    
        /**
    
        * 查询所有用户信息
    
        */
    
        List<User> getAllUser();
    
    }
    
    

    测试MyBatis

    
    @Test
    
        public void addUser() {
    
            try {
    
                // 使用xml文件创建inputSteam对象
    
                InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    
                // 使用inputSteam对象创建sqlSessionFactoryBuilder
    
                SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    
                // 获取sqlSessionFactory
    
                SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
    
                // 获取sqlSession会话 通过这个会话可以操作MyBatis的功能 参数传入一个布尔值代表自动提交事务
    
                SqlSession sqlSession = sqlSessionFactory.openSession(true);
    
                // 获取mapper接口对象
    
                UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    
                // 测试功能
    
                int result = mapper.insertUser();
    
                System.out.println(result);
    
            } catch (IOException e) {
    
                e.printStackTrace();
    
            }
    
        }
    
    

    结果已经插入数据库

    image.png

    MyBatis mapper 对象创建流程

    image.png

    idea项目目录

    image.png

    相关文章

      网友评论

          本文标题:MyBatis入门教程 初体验

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