欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Mybatis的使用以及快速入门

程序员文章站 2022-04-07 22:42:16
一、思维导图二、基本配置(1)mybatis-config.xml

一、思维导图

Mybatis的使用以及快速入门

二、基本配置

(1)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="db.properties">
        <property name="username" value="root"/>
        <property name="password" value="123"/>
    </properties>

<!--    标准的日志工厂实现-->
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
<!--    可以给实体类起别名-->
<!--    <typeAliases>-->
<!--        <typeAlias type="com.kuang.pojo.User" alias="User"></typeAlias>-->
<!--    </typeAliases>-->
    <typeAliases>


    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <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 class="com.kuang.dao.BlogMapper"/>
    </mappers>


</configuration>

 (2)db.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8

(3)MybatisUtils

package com.kuang.utils;

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.IOException;
import java.io.InputStream;
                                    
//sqlSessionFactory -->sqlSession

public class MybatisUtils {
    private  static  SqlSessionFactory sqlSessionFactory;
    static {

        InputStream inputStream = null;
        try {
//            使用Mybatis第一步:获取sqlSessionFactory对象
            String resource = "mybatis-config.xml";
            inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
//        获取salSessionFactory,完全包含了面向数据库执行SQL命令所需的所有方法
    public static SqlSession getSqlSession(){
        SqlSession sqlSession = sqlSessionFactory.openSession();
        return sqlSession;
    }
}

(4)pom 文件

<?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.kuang</groupId>
    <artifactId>Mybatis-Study</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>Mybatis-01</module>
        <module>mybatis-02</module>
        <module>mybatis-03</module>
        <module>mybatis-06</module>
        <module>mybatis-08</module>
        <module>mybatis-09</module>
        <module>mybatis-10</module>
        <module>mybatis-15</module>
    </modules>

    <!--    导入依赖-->
    <dependencies>
<!--        mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
<!--        mybatis-->
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
<!--        junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>

        </dependency>
    </dependencies>
<!--    在build中配置resource,来防止我们资源导出失败的问题-->、
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

</project>

二、注解的方式(与SQL有关)

(1)CRUD

Mybatis的使用以及快速入门

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.kuang.dao.UserMapper">
<!--  在当前Mapper.xml中使用二级缓存-->
    <cache type="org.mybatis.caches.ehcache.EhcacheCache"/>
    <select id="querUserById" resultType="User">
        select * from user where id=#{id}
    </select>
</mapper>

UserMapper.xml文件。这里面主要写的是sql,现在我们来看一下,

namespace为所引用的接口,这里相当于UserMapper.

id,相当于这个UserMapper中方法的名字

resultType为返回的类型,parameterType为参数的类型

(2)多对一

(a)复杂环境的搭建

1)新建数据库 2)导入lomobok 3)新建实体类Teacher,Student 4)建立Mapper接口 5)建立Mapper.xml文件 6)在核心配置文件中绑定注册我们的Mapper接口或者文件 6)测试查询是否能够成功

(b)现在我们需要查询学生和老师的相关信息

Mybatis的使用以及快速入门

 其次,是在student中把resultType="Student",改成resultMap="StudentTeacher"

再写reultMap里面的值。

Mybatis的使用以及快速入门

 (b)按照结果嵌套处理

Mybatis的使用以及快速入门

 (3)一对多处理

Mybatis的使用以及快速入门

(4)动态SQL

(a)什么是动态SQL

动态SQL就是根据不同的条件生成不同的SQL语句。

 (b)if

Mybatis的使用以及快速入门

 

(5)缓存

一级缓存也就本地缓存

1)工作机制:

(a)一个会话查询一条数据,这个数据就会被放在当前会话的一级缓存中,如果当前会话关闭了,这个会话对应的一级缓存就没了;但是我们想要的是,会话关闭了,一级缓存中的数据被保存到二级缓存中。

(b)新的会话查询信息,就可以从二级缓存中获取内容

(c)不同的mapper查出的数据会放在自己对应的缓存map中;

2)如何开启全局缓存

Mybatis的使用以及快速入门

 Mybatis的使用以及快速入门

 (2)在要使用二级缓存的Mapper中开启

Mybatis的使用以及快速入门

也可以自动参数

(3)测试

 (a)问题:我们需要将实体类序列化,否则会报错

Mybatis的使用以及快速入门

 小结:

 (a)只有开启了二级缓存,在同一个Mapper下就有效

(b)所以的数据都会先放在一级缓存中

(c)只有当会话提交,或者关闭的时候,才会提交到二级缓存中。

Mybatis的使用以及快速入门

 

 

(6)Mybatis的核心

 Mybatis的使用以及快速入门

(7)Mybatis总结

通过这次Mybatis,我也终于了解了在项目开发中为什么将SQL和代码进行分离,以及各个参与的意思,xml文件怎么和接口向连接的,以及为什么实体类要进行实现序列化接口等等。

本文地址:https://blog.csdn.net/MyxZxd/article/details/107672923

相关标签: 【mysql】