第57次(mybatis)

学习主题:mybatis

学习目标:

1 掌握框架的概念

2 掌握mybatis环境搭建

对应视频:

http://www.itbaizhan.cn/course/id/85.html

对应文档:

对应作业

  1. 框架是什么_为什么框架都要有配置文件

    1. 什么是框架? 常用的框架有哪些?

框架是偷懒的程序员将代码封装,之后重复使用的过程.

  1. 为什么框架都要有配置文件?

1.框架是个半成品,以数据库为例,我们使用时需要输入URL,用户名.密码等.

2.程序员在使用框架时,必须要告诉框架需要的信息.通常以配置文件的方式告知,一般来说,通常使用xml 作为框架的配置文件.

  1. 常用的框架有哪些_MyBatis框架简介

    1. 列举你常用的框架, 并简单描述其主要功能.

MyBatis是一个ORM框架, 用于操作数据库, 底层是对 jdbc进行的封装.

MyBatis的前身是iBatis, 是Apache下的一个开源项目.

MyBatis ,ORM 框架, 底层是对 jdbc 进行了封装.

Spring , 是一个容器.

SpringMVC , 封层框架.

Struts2 ,功能类似于 SpringMVC ,

Hibernate 功能类似于MyBatis.

  1. 你如何理解MyBatis框架?

把一些常用的代码进行了封装,减少了代码的冗余.

  1. 搭建MyBatis环境使用的jar包详解

    1. MyBatis框架搭建需要哪些jar包?

MyBatis核心 jar : mybatis-3.2.7.jar

驱动 jar: mysql-connector-java-5.1.30.jar

  1. 分别说明MyBatis依赖的jar包的含义.

asm-3.3.1.jar 字节码解析包, 被cglib依赖

cglib-2.2.2.jar 动态代理的实现

commons-logging-1.1.1.jar 日志包

javassist-3.17.1-GA.jar 字节码解析包

log4j-1.2.17.jar 日志包

log4j-api-2.0-rc1.jar 日志

log4j-core-2.0-rc1.jar 日志

slf4j-api-1.7.5.jar 日志

slf4j-log4j12-1.7.5.jar 日志

  1. 编写MyBatis核心配置文件

    1. MyBatis的核心配置文件有什么特点, 配置时有什么注意事项?

是一个 xml文件, 命名无要求, 位置无要求, 一般叫mybatis.xml, 放在src目录下.

  1. 什么是数据源? 在核心配置文件中, 如何配置数据源?

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE configuration

PUBLIC "-//http://mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

<!--

用于指定使用哪个环境 default: 用于指定使用的环境id

-->

<environments default="dev">

<!--

用于配置开发环境 id: 环境的唯一识别码

-->

<environment id="dev">

<!--

事务管理器

type: 用于设置mybatis采用什么方式管理事务

JDBC表示采用和JDBC一样的事务管理方式

-->

<transactionManager type="JDBC"></transactionManager>

<!-- 数据源/连接池, 用于配置连接池和数据库连接的参数 type: 用于设置mybatis是否采用连接池技术

POOLED表示MyBatis采用连接池技术

-->

<dataSource type="POOLED"> <property name="driver"

value="com.mysql.jdbc.Driver"/>

<property name="url"

value="jdbc:mysql://localhost:3306/java505"/>

<property name="username" value="root"/>

<property name="password" value="root"/>

</dataSource>

</environment>

</environments>

</configuration>

  1. MyBatis映射文件编写及扫描配置

    1. MyBatis映射文件编写及扫描配置

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper

PUBLIC "-//http://mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--

namespace: 命名空间, 可以随意定义, 一般情况下要写全限定路径

MyBatis管理SQL语句是通过namespace+id来定位的

-->

<mapper namespace="com.bjsxt.mapper.UserMapper">

<!-- select标签用于编写查询语句 id: sql语句的唯一标识, 类比为方法名 resultType: 用于设定返回结果的类型(全限定路径) 如果返回结果是集合, 要写集合泛型的类型

-->

<select id="selAll" resultType="com.bjsxt.pojo.User"> select * from t_user

</select>

</mapper>

  1. 介绍映射文件中常用的标签及配置时的注意事项.

第58次(mybatis)

学习主题:mybatis

学习目标:

1 掌握mybatis处理查询

2 掌握mybatis核心配置文件

3 掌握mybatis的多种查询方式

4 掌握Log4j的使用

5 掌握mybatis集成log4j

对应视频:

http://www.itbaizhan.cn/course/id/85.html

对应文档:

对应作业

  1. 测试代码_selectList实现查询所有的操作

    1. 使用MyBatis时用到的核心对象是什么? 如何创建?

InputStream is = Resources.getResourceAsStream("mybatis.xml");

  1. 什么是JUnit? 如何使用?

用于测试方法的jar包.

  1. MyBatis核心配置文件详解

    1. MyBatis核心配置文件中有哪些常用标签? 如何配置?

<configuration>

这是配置文件的根元素, 所有的其他元素都要在这个标签下

使用.

<environments>

用于管理所有的环境, 并可以指定默认使用哪个环境. 通过

default属性来指定.

<environment>

用于配置环境. id属性用于唯一标识当前环境

<transactionManager>

用于配置事务管理器

type 属性

用于指定 MyBatis 采用何种方式管理事务

  1. JDBC: 表示 MyBatis 采用与原生 JDBC 一致的方式管理事务
  2. MANAGED: 表示将事务管理交给其他容器进行, 例如 Spring

<DataSource>

用于配置数据源, 设置 MyBatis 是否使用连接池技术, 并且配置数据库连接的四个参数

type 属性

用于设置 MyBatis 是否使用连接池技术

  1. POOLED, 表示采用连接池技术
  2. UNPOOLED, 表示每次都会开启和关闭连接, 不使用连接池技术
  3. JNDI, 使用其他容器(例如 Spring)提供数据源 1.6 <property>

用于配置数据库连接参数(driver, url, username, password)

<mappers>

用于扫描 mapper 信息

mapper 映射配置文件详解

<mapper>

根元素

namespace 属性

用于指定命名空间, mybatis 是通过 namespace+id 的方式来定位 SQL 语句的, 所以必须指定namespace. 通常namespace被配置为全限定路径

<select>

用于定义查询语句(DQL)

id 属性

用于唯一表示 SQL 语句, 类似于方法的方法名

2.2.2 resultType 属性

用于设定查询返回的数据类型, 要写类型的全限定路径. 如果返回的是集合类型, 要写集合的泛型的类型.

  1. 为什么要进行映射扫描? 如何配置?

在MyBatis中, 推荐使用mapper作为包名, 我们只需要写一个映射配置文件即可

使用 xml 文件减少代码量.

  1. MyBatis三个查询方法_selectList_selectOne_selectMap

    1. 请描述selectList, selectOne和selectMap三个方法的作用及其中的关系.

selectList

用于查询多条数据的情况, 返回值是一个 list 集合. 如果没有查到任何数据, 返回没有元素的集合(空集合, 不是 null)

selectOne

用于查询单条数据的情况, 返回值是一个对象. 如果没有查到任何数

据, 返回 null

selectMap

用于查询多条数据的情况, 多条数据要形成一个 Map 集合. 需要指定哪个属性作为 key. 如果查不到, 返回一个空 map 集合(不是 null)

  1. 简述selectMap方法如何使用? 以及返回结果的组成方式.

用于查询多条数据的情况, 多条数据要形成一个 Map 集合. 需要指定哪个属性作为 key. 如果查不到, 返回一个空 map 集合(不是 null)

  1. Log4J简介_Log4J的五个日志级别

    1. Log4J简介_Log4J的五个日志级别

FATAL ERROR WARN INFO DEBUG

  1. Log4J日志级别有哪些? 分别代表什么含义?

FATAL :

致命的, 表示非常严重的错误, 一般是系统错误

ERROR :

错误, 表示代码错误, 比较严重

WARN :

警告, 不影响程序的运行, 但是可能存在风险.

INFO :

信息, 表示一个普通的输出信息

DEBUG

调试, 表示程序员人为的一些调试信息

  1. Log4J配置文件详解_日志格式简介_日志对象的获取及使用

    1. 常用的log4j日志格式符号有哪些? 代表什么含义?
  1. 如何使用log4j记录日志?

导包 log4j-1.2.17.jar log4j-api-2.0-rc1.jar log4j-core-2.0-rc1.jar

配置文件使用一个叫log4j.properties的配置文件, 会设定log4j的

设置信息, 例如日志级别, 日志输出方式, 日志格式等等.

# Set root category priority to INFO and its only appender to CONSOLE.

# log4j.rootCategory=DEBUG, CONSOLE log4j.rootCategory=DEBUG, CONSOLE, LOGFILE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=- %m %c %l %d{yyyy-MM-dd HH:mm:ss}%n

# LOGFILE is set to be a File appender using a PatternLayout.

log4j.appender.LOGFILE=org.apache.log4j.FileAppender log4j.appender.LOGFILE.File=d:/test.log log4j.appender.LOGFILE.Append=true log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout log4j.appender.LOGFILE.layout.ConversionPattern=- %m %l%n

  1. 如何使用log4j记录日志?

    1. 如何在MyBatis中使用Log4J? 如何配置

<settings>用于设置MyBatis 在运行时的行为方式, 例如:

缓存, 延迟加载, 日志等.

<!-- settings标签 -->

<settings>

<!-- 设置MyBatis使用log4j日志支持 -->

<setting name="logImpl" value="LOG4J"/>

</settings>

  1. 如何设置MyBatis中日志的级别? 有几种级别?

5种.

# 提高整体日志级别

log4j.rootCategory=ERROR, CONSOLE

# 单独设置SQL语句的输出级别为DEBUG级别

# 方法级别

# log4j.logger.com.bjsxt.mapper.UserMapper.selAll=DEBUG

# 类级别

# log4j.logger.com.bjsxt.mapper.UserMapper=DEBUG

# 包级别

log4j.logger.com.bjsxt.mapper=DEBUG

  1. properties标签实现软编码

    1. 什么是软编码? 有什么好处?

功能用于加载外部的properties文件

<!-- properties加载外部文件 -->

<properties resource="db.properties" />

  1. properties标签如何配置?

使用方式获取properties文件中数据时, 要通过${}的方式获取.

jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/java505 jdbc.username=root jdbc.password=root

<environments default="dev">

<environment id="dev">

<transactionManager type="JDBC" />

<dataSource type="POOLED">

<property name="driver" value="${jdbc.driver}"/>

<property name="url" value="${jdbc.url}"/>

<property name="username" value="${jdbc.username}"/>

<property name="password" value="${jdbc.password}"/>

</dataSource>

</environment>

</environments>

事务中mybatis通过id查不到但是通过其他条件可以查到_40打卡 MyBatis 学习相关推荐

  1. spring 事务中先删除再插入后唯一键冲突 delete then insert duplicate key

    今天在同事碰到了一个比较有意思的问题,为了实现某个场景中的数据更新和删除,想通过 delete all entities 然后 insert new entities 的方式减少判断数据是否删除的操作 ...

  2. REPEATABLE-READ隔离级别 事务中无法读到其它事务提交了的最新数据

    前言: 业务要求一个简单的并发控制,使得一条数据只被确认一次,我的方案是 悲观锁,就是在事务中先对数据行加锁(MySQL InnoDB 行锁基于索引),判断是否已经确认过,未确认的情况下确认,已确认则 ...

  3. mysql innodb事务中_MySQL InnoDB如何保证事务特性示例详解

    前言 如果有人问你"数据库事务有哪些特性"?你可能会很快回答出原子性.一致性.隔离性.持久性即ACID特性.那么你知道InnoDB如何保证这些事务特性的吗?如果知道的话这篇文章就可 ...

  4. 分布式事务中常见的三种解决方案

    分布式事务中常见的三种解决方案 目录 一.分布式事务前奏 二.柔性事务解决方案架构 (一).基于可靠消息的最终一致性方案概述 (二).TCC事务补偿型方案 (三).最大努力通知型 三.基于可靠消息的最 ...

  5. 分布式事务中的三种解决方案详解(转载)

    一.分布式事务前奏 快看小说网事务:事务是由一组操作构成的可靠的独立的工作单元,事务具备ACID的特性,即原子性.一致性.隔离性和持久性. 本地事务:当事务由资源管理器本地管理时被称作本地事务.本地事 ...

  6. 分布式事务中的那些事——微服务总结(二)

    文章目录 前言 事务和分布式事务 导致数据不一致的问题 CAP和BASE理论 CAP理论 Base理论 常见的分布式事务解决方案 两阶段提交(2PC) TCC分布式事务 基于本地消息表的最终一致性 基 ...

  7. Spring 如何在一个事务中开启另一个事务?

    Spring项目,需要在一个事务中开启另一个事务. 上面提到的情景可能不常见,但是还是会有的,一旦遇到,如果业务比较复杂,就会很麻烦,但是还是有解决的方案的,比如将一个service方法拆成两个方法, ...

  8. Mysql 事务中Update 会锁表吗?

    Mysql 事务中Update 会锁表吗? 两种情况: 1.带索引 2.不带索引 前提介绍: 方式:采用命令行的方式来模拟 1.mysq由于默认是开启自动提交事务,所以首先得查看自己当前的数据库是否开 ...

  9. 如果MySQL事务中发生了网络异常?

    一 前言 在我们运维MySQL的时候,总会遇到各种情况导致程序和MySQL之间的会话异常中断,比如 假如强制关闭应用 假如client机器突然崩溃宕机/断电 假如网络发生抖动/网卡发生故障 机房级别断 ...

最新文章

  1. C#编写的生成缩略图程序
  2. LeetCode集锦(八) - 第26题 Remove Duplicates From Sorted Array
  3. 设置了hover伪类中有cursor:hand但是没有效果
  4. 关于js复制文本信息(按钮级别)
  5. 设计模式(中介者模式-对象去耦)
  6. 我对计算机网络的期待,表白对女朋友说的情话短句 我愿是你最期待的风景线...
  7. shell里写个简单循环
  8. NVIDIA Jetson TK1学习与开发——手动刷机
  9. HTML+JavaScript简单搜索功能实现
  10. Xshell连接centOS7
  11. 奉劝学弟学妹,学完JavaScript就该学TypeScript了,让我们一起了解TypeScript和如何去搭建运行环境吧
  12. JS进阶 Day1 作用域 函数进阶 结构赋值(学习笔记)
  13. mysql match against_mysql全文模糊搜索MATCH AGAINST方法
  14. Python3网络爬虫使用User Agent和代理IP隐藏身份
  15. VS2010 文件存取之CStdioFile
  16. 领导提拔你,第三看能力,第二看态度,第一看…
  17. 诺基亚5320微信提示服务器繁忙,诺基亚5320XM刷机要注意 RM409刷6.13失败的经历
  18. (全网最细)顺序栈详解 +实例解析
  19. 搞搞电脑微信表情的破解(.dat转png or jpg)
  20. iPhone 6plus 分辨率 为什么是 1242 2208

热门文章

  1. 如何在Colab上实现近200万图片的精准检索匹配?
  2. 决策树算法从入门到精通
  3. 让你的 IDEA 好用到飞起来的配置
  4. 图片管理之删除SKU表数据
  5. 素数和_只愿与一人十指紧扣_新浪博客
  6. PyTorch Cookbook(常用代码段集锦)
  7. 机器视觉系统设计关键:成像基准
  8. 伯克利大神一人投中16篇!ICLR 2021论文接收统计出炉
  9. 009-回归测试的测试范围是什么?
  10. 比JD-GUI还要好用的Luyten