Mybatis学习笔记2 增删改查及核心配置文件详解

Mybatis学习笔记1 Mybatis入门_biubiubiu0706的博客-CSDN博客

 将Mybatis进行封装

SqlSessionUtil工具类

package com.example.util;

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;

/**
 * @author hrui
 * @date 2023/9/8 14:55
 */
public class SqlSessionUtil {

    //工具类的构造方法一般都是私有化
    //方法都是静态的
    //为了防止new对象,构造方法私有化
    private SqlSessionUtil(){

    }
    private static SqlSessionFactory sqlSessionFactory;

    //类加载时候执行
    //SqlSessionUtil工具类在被加载的时候,解析mybatis-config1.xml.创建sqlSessionFactory对象
    static{
        try {
            SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
            //一个sqlSessionFactory对应一个数据库
            sqlSessionFactory= sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config1.xml"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //获取会话对象 返回会话对象
    public static SqlSession openSession(){
        SqlSession sqlSession = sqlSessionFactory.openSession();
        return sqlSession;
    }
}

这样测试就方便很多了

Mybatis学习笔记2 增删改查及核心配置文件详解_第1张图片

新建一个模块  mybatis-02-crud

Mybatis学习笔记2 增删改查及核心配置文件详解_第2张图片

maven项目

Mybatis学习笔记2 增删改查及核心配置文件详解_第3张图片Mybatis学习笔记2 增删改查及核心配置文件详解_第4张图片

引入依赖


    
        
            org.mybatis
            mybatis
            3.5.10
        

        
            mysql
            mysql-connector-java
            8.0.30
        
        
        
            ch.qos.logback
            logback-classic
            1.2.11
        
        
            junit
            junit
            4.13.2
            test
        
    

把工具类和mybatis-config1.xml,logback.xml(日志配置文件),xxxMapper.xml都复制过来

下面这种写法,实际开发中是不存在的,值是写死的

Mybatis学习笔记2 增删改查及核心配置文件详解_第5张图片

传入的这个对象就是封装数据的 和sql里的#{xxx}形成映射关系

Mybatis学习笔记2 增删改查及核心配置文件详解_第6张图片

用Map封装试下     #{}内写Map集合的key  如果key不存咋子  #{key不存在} 就是个null值

Mybatis学习笔记2 增删改查及核心配置文件详解_第7张图片

Mybatis学习笔记2 增删改查及核心配置文件详解_第8张图片

插入成功

一般来说,我们会把key最为对应关系

Mybatis学习笔记2 增删改查及核心配置文件详解_第9张图片

Mybatis学习笔记2 增删改查及核心配置文件详解_第10张图片

上面是通过Map传值

下面通过POJO类传值 提供set get  无参  全参  toString equal  hashCode

Mybatis学习笔记2 增删改查及核心配置文件详解_第11张图片

Mybatis学习笔记2 增删改查及核心配置文件详解_第12张图片

此时#{}里就是POJO的属性名(严格来说是get方法后面XXX转小写?我认为是忽略大小写   形成一种映射关系 此时如果属性名写错,Map的话会插入null,但是pojo的话会报错,并且提示 There is no getter for property named 'xxxx' in class xxxxxxxx

就报错说找不到该属性的get方法

Mybatis学习笔记2 增删改查及核心配置文件详解_第13张图片

完成delete操作

Mybatis学习笔记2 增删改查及核心配置文件详解_第14张图片

Mybatis学习笔记2 增删改查及核心配置文件详解_第15张图片

如果直接传个常量值的话   #{随便写什么都可以}

Mybatis学习笔记2 增删改查及核心配置文件详解_第16张图片

完成update操作

Mybatis学习笔记2 增删改查及核心配置文件详解_第17张图片

Mybatis学习笔记2 增删改查及核心配置文件详解_第18张图片Mybatis学习笔记2 增删改查及核心配置文件详解_第19张图片

查询  查一个

下图id写错了  selectCarById

Mybatis学习笔记2 增删改查及核心配置文件详解_第20张图片

这里注意下  查询不用commit

Mybatis学习笔记2 增删改查及核心配置文件详解_第21张图片

解决办法

1.加别名

2.用resultMap

3.配置成使用驼峰标识

1.加别名方式:

Mybatis学习笔记2 增删改查及核心配置文件详解_第22张图片

Mybatis学习笔记2 增删改查及核心配置文件详解_第23张图片

2.使用resultMap

Mybatis学习笔记2 增删改查及核心配置文件详解_第24张图片

Mybatis学习笔记2 增删改查及核心配置文件详解_第25张图片Mybatis学习笔记2 增删改查及核心配置文件详解_第26张图片

3.使用驼峰

在mybatis核心配置文件里

Mybatis学习笔记2 增删改查及核心配置文件详解_第27张图片

.XML

测试

Mybatis学习笔记2 增删改查及核心配置文件详解_第28张图片

select查所有

Mybatis学习笔记2 增删改查及核心配置文件详解_第29张图片

Mybatis学习笔记2 增删改查及核心配置文件详解_第30张图片

关于映射文件中namespace的作用

原先上面测试都是只有一个xxxMapper.xml映射文件

当我有两个.XML映射文件的时候且里面的id一样的时候

这种方式就会出错

测试

Mybatis学习笔记2 增删改查及核心配置文件详解_第31张图片

Mybatis学习笔记2 增删改查及核心配置文件详解_第32张图片

Mybatis学习笔记2 增删改查及核心配置文件详解_第33张图片

这种情况下

Mybatis学习笔记2 增删改查及核心配置文件详解_第34张图片

Mybatis核心配置文件中的多环境配置

Mybatis学习笔记2 增删改查及核心配置文件详解_第35张图片

Mybatis学习笔记2 增删改查及核心配置文件详解_第36张图片

Mybatis学习笔记2 增删改查及核心配置文件详解_第37张图片

Mybatis学习笔记2 增删改查及核心配置文件详解_第38张图片

关于Mybatis核心配置文件中的事务管理

Mybatis学习笔记2 增删改查及核心配置文件详解_第39张图片

Mybatis学习笔记2 增删改查及核心配置文件详解_第40张图片

关于DataSource------->DataSource是JDK的规范  DataSource简单理解,放的就是数据库连接

Mybatis学习笔记2 增删改查及核心配置文件详解_第41张图片

不同类型的DataSource下的不同属性

Mybatis学习笔记2 增删改查及核心配置文件详解_第42张图片

JNDI作用:让Mybatis使用容器的连接池    容器实现了JNDI规范

Mybatis学习笔记2 增删改查及核心配置文件详解_第43张图片

关于数据源 类型  UNPOOLED-->不适用数据库连接池--->每次创建新的Connection对象

和POOLED---->使用Mybatis自己实现的数据库连接池

关于上述亮着的具体区别是什么?

在自己本地数据库新建库和表

Mybatis学习笔记2 增删改查及核心配置文件详解_第44张图片

Mybatis学习笔记2 增删改查及核心配置文件详解_第45张图片

核心配置文件  默认的数据库使用连接池   本地不适用连接池,看下具体区别

Mybatis学习笔记2 增删改查及核心配置文件详解_第46张图片

测试  用连接池的话,会重用连接对象

Mybatis学习笔记2 增删改查及核心配置文件详解_第47张图片

测试另外一个不用连接池的数据库

Mybatis学习笔记2 增删改查及核心配置文件详解_第48张图片

Mybatis学习笔记2 增删改查及核心配置文件详解_第49张图片

关于数据库连接池的一些配置

Mybatis学习笔记2 增删改查及核心配置文件详解_第50张图片Mybatis学习笔记2 增删改查及核心配置文件详解_第51张图片

当连接用完,会怎么办???????

它会等待20秒   20秒到了之后,会强制拿出连接继续执行

Mybatis学习笔记2 增删改查及核心配置文件详解_第52张图片

关于最大空闲数量

Mybatis学习笔记2 增删改查及核心配置文件详解_第53张图片

Mybatis学习笔记2 增删改查及核心配置文件详解_第54张图片

关于核心配置文件里的preoperties标签

Mybatis学习笔记2 增删改查及核心配置文件详解_第55张图片

Mybatis学习笔记2 增删改查及核心配置文件详解_第56张图片

properties的另外一种用法

Mybatis学习笔记2 增删改查及核心配置文件详解_第57张图片

Mybatis学习笔记2 增删改查及核心配置文件详解_第58张图片

Mybatis学习笔记2 增删改查及核心配置文件详解_第59张图片

properties还有一种写法  url的写法  也是可以的

你可能感兴趣的:(mybatis,学习,笔记)