• 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

    <?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为参数的类型

    多对一

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

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

    再写reultMap里面的值。

     按照结果嵌套处理

     一对多处理

    动态SQL

    缓存

    一级缓存也就本地缓存

    1)工作机制:

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

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

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

    2)如何开启全局缓存

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

     小结:

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

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

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

  • 相关阅读:
    codespell
    IDEA打开就闪退或关闭详细解决办法
    git log 空格 翻页
    Vue+ElementUI 分页器elpagination的使用方法
    Vue中computed用法 computed比较适合对多个变量或者对象进行处理后返回一个结果值 计算属性
    word如何删除文本中多余的空行
    Notepad++删除空白行
    Vue生命周期详解
    elementui 自定义树形控件特定行里字体的颜色 content[i].style.color = '#ffff'
    git学习
  • 原文地址:https://www.cnblogs.com/cwshuo/p/13404689.html
Copyright © 2020-2023  润新知