# Mybatis 入门

https://mybatis.net.cn/index.html

  1. 创建Maven项目,pom.xml中导入mybatis依赖

    		<!-- mybatis依赖 -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.6</version>
            </dependency>
            
            <!-- 连接数据库 -->
            <dependency>
                <groupId>org.mariadb.jdbc</groupId>
                <artifactId>mariadb-java-client</artifactId>
                <version>3.0.7</version>
            </dependency>
    
  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>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <!--数据库连接信息 -->
                    <property name="driver" value="org.mariadb.jdbc.Driver"/>
                    <property name="url" value="jdbc:mariadb://127.0.0.1:3306/mybatis"/>
                    <property name="username" value="root"/>
                    <property name="password" value="ROOT"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <!-- 加载sql映射文件 -->
            <mapper resource="UserMapper.xml"/>
        </mappers>
    </configuration>
    
  3. 加载sql映射文件 -- UserMapper.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="test">
        <!-- namespace 名称空间-->
        <select id="selectAll" resultType="top.brightzm.pojo.User">
            select *
            from tb_user;
        </select>
    </mapper>
    
  4. 进行编码

    1. 定义pojo类

    2. 加载核心配置文件,获取sqlFactory对象

      // 1.加载mybatis核心配置文件,获取sqlSessionFactory
              String resource = "mybatis.config.xml";
              InputStream inputStream = Resources.getResourceAsStream(resource);
              SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      
    3. 获取sqlSession对象,执行sql语句

      // 2.获取sqlSession对象,执行sql语句
              SqlSession sqlSession = sqlSessionFactory.openSession();
      
              List<User> users = sqlSession.selectList("test.selectAll");
              System.out.println(users);
      
    4. 释放资源


# Mapper 代理开发

  1. 定义与sql映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放着在同一目录下

MAVEN项目下,配置文件必须存放在 src/resource目录下

可以在resource目录下创建路径与接口同名路径,编译后就会处在同一目录下,如图

路径更改后,mybatis-config.xml中也要同步更改映射文件的路径

<mappers>
        <!-- 加载sql映射文件 -->
        <mapper resource="top/brightzm/mapper/UserMapper.xml"/>
</mappers>
  • 如果Mapper接口名称和SQL映射文件名称相同,并在同一目录下,则可以使用包扫描的方式简化sql映射文件加载
<mappers>
        <!-- 加载sql映射文件 -->
        <!-- <mapper resource="top/brightzm/mapper/UserMapper.xml"/>-->

        <!-- Mapper代理开发方式 -->
        <package name="top.brightzm.mapper"/>
</mappers>

image-20220911195311511

image-20220911195642386

  1. 设置sql映射文件的namespace属性为Mapper接口全限定名 -- UserMapper.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="top.brightzm.mapper.UserMapper">
        <!-- namespace 名称空间-->
        <select id="selectAll" resultType="top.brightzm.pojo.User">
            select *
            from tb_user;
        </select>
    </mapper>
    
  2. 在Mapper接口中定义方法,方法名就是sql映射文件中sql语句的id,并保持参数类型和返回值类型一致

    List<User> selectAll();
    
  3. 进行编码

    		// 通过sqlSession的getMapper方法获取Mapper接口的代理对象
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            // 调用方法
            List<User> users = userMapper.selectAll();
    

# Mybaits核心配置文件

  1. 文件结构

    配置各个标签,需要严格遵守前后顺序

image-20220911205135532

  1. 类型别名

    类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写

    mybaits-config.xml 
    
    <typeAliases>
            <!-- 类型别名 -->
            <package name="top.brightzm.pojo"/>
     </typeAliases>
    
    UserMapper.xml
    <select id="selectAll" resultType="user">