美文网首页
Mybatis In Action 1

Mybatis In Action 1

作者: iMikasa_ | 来源:发表于2021-09-03 20:41 被阅读0次

    什么是Mybatis

    MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

    Do it

    1.pom.xml

    <?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>com.imikasa</groupId>
        <artifactId>mybatis-test01</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <parent>
            <artifactId>spring-boot-starter-parent</artifactId>
            <groupId>org.springframework.boot</groupId>
            <version>2.4.2</version>
        </parent>
    
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.5</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
        </dependencies>
    </project>
    

    编写完pojo

    2.开始配置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>
        <properties resource="MySql.properties"></properties><!-- 此配置是加载数据源 -->
        <typeAliases>
            <typeAlias type="com.imikasa.pojo.Hero" alias="hero"/><!--  给全限定名定义简便别名,方便映射文件操作-->
        </typeAliases>
        <environments default="dev">
            <environment id="dev">
                <transactionManager type="JDBC"></transactionManager>
                <dataSource type="POOLED">
                    <property name="driver" value="${driver}"/>
                    <property name="url" value="${url}"/>
                    <property name="username" value="${username}"/>
                    <property name="password" value="${password}"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="myMapper/HeroMapper.xml"/><!-- 配置映射文件 -->
        </mappers>
    </configuration>
    

    MySql.properties

    driver=com.mysql.cj.jdbc.Driver
    url=jdbc:mysql://localhost:3301/study?serverTimezone=UTC
    username=root
    password=1234
    

    4.映射文件

    <?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="myMapper">
        <select id="findAll" resultType="com.imikasa.pojo.Hero">
            select * from hero
        </select>
    </mapper>
    

    5.测试

    package com.imikasa.test;
    
    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 org.junit.Test;
    import java.io.IOException;
    import java.util.List;
    
    public class MyTestMybatis {
        @Test
        public void test() throws IOException {
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
            try(SqlSession sqlSession = sqlSessionFactory.openSession()){
                final List<Object> findAll = sqlSession.selectList("findAll");
                System.out.println(findAll);
            }
        }
    }
    

    注:openSession(boolean),可以设置事务自动提交


    1.接口代理方式(mapper)

    我们首先看以前的做法,在全局配置文件 mybatis-configuration.xml 通过 标签来加载映射文件,那么如果我们项目足够大,有很多映射文件呢,难道我们每一个映射文件都这样加载吗,这样肯定是不行的,那么我们就需要使用 mapper 接口来加载映射文件


    规范:

    • 映射文件中的namespace与mapper接口中的全限定名相同
    • 映射文件中每个操作的id与mapper接口中的方法名相同
    • 映射文件中每个parameterType的类型与mapper接口的参数类型相同
    • 映射文件的resultType与mapper接口中的方法返回类型相同(集合按照泛型的)

    2.测试代码

    通过SqlSession对象获取mapper接口

    //获取mapper接口
                UserMapper userMapper = session.getMapper(UserMapper.class);
                User user = userMapper.selectUserById(1);
    

    JUST ONE......

    相关文章

      网友评论

          本文标题:Mybatis In Action 1

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