事务中mybatis通过id查不到但是通过其他条件可以查到_40打卡 MyBatis 学习
第57次(mybatis)
学习主题:mybatis
学习目标:
1 掌握框架的概念
2 掌握mybatis环境搭建
对应视频:
http://www.itbaizhan.cn/course/id/85.html
对应文档:
无
对应作业
- 框架是什么_为什么框架都要有配置文件
- 什么是框架? 常用的框架有哪些?
框架是偷懒的程序员将代码封装,之后重复使用的过程.
- 为什么框架都要有配置文件?
1.框架是个半成品,以数据库为例,我们使用时需要输入URL,用户名.密码等.
2.程序员在使用框架时,必须要告诉框架需要的信息.通常以配置文件的方式告知,一般来说,通常使用xml 作为框架的配置文件.
- 常用的框架有哪些_MyBatis框架简介
- 列举你常用的框架, 并简单描述其主要功能.
MyBatis是一个ORM框架, 用于操作数据库, 底层是对 jdbc进行的封装.
MyBatis的前身是iBatis, 是Apache下的一个开源项目.
MyBatis ,ORM 框架, 底层是对 jdbc 进行了封装.
Spring , 是一个容器.
SpringMVC , 封层框架.
Struts2 ,功能类似于 SpringMVC ,
Hibernate 功能类似于MyBatis.
- 你如何理解MyBatis框架?
把一些常用的代码进行了封装,减少了代码的冗余.
- 搭建MyBatis环境使用的jar包详解
- MyBatis框架搭建需要哪些jar包?
MyBatis核心 jar : mybatis-3.2.7.jar
驱动 jar: mysql-connector-java-5.1.30.jar
- 分别说明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 日志
- 编写MyBatis核心配置文件
- MyBatis的核心配置文件有什么特点, 配置时有什么注意事项?
是一个 xml文件, 命名无要求, 位置无要求, 一般叫mybatis.xml, 放在src目录下.
- 什么是数据源? 在核心配置文件中, 如何配置数据源?
<?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>
- MyBatis映射文件编写及扫描配置
- 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>
- 介绍映射文件中常用的标签及配置时的注意事项.
第58次(mybatis)
学习主题:mybatis
学习目标:
1 掌握mybatis处理查询
2 掌握mybatis核心配置文件
3 掌握mybatis的多种查询方式
4 掌握Log4j的使用
5 掌握mybatis集成log4j
对应视频:
http://www.itbaizhan.cn/course/id/85.html
对应文档:
无
对应作业
- 测试代码_selectList实现查询所有的操作
- 使用MyBatis时用到的核心对象是什么? 如何创建?
InputStream is = Resources.getResourceAsStream("mybatis.xml");
- 什么是JUnit? 如何使用?
用于测试方法的jar包.
- MyBatis核心配置文件详解
- MyBatis核心配置文件中有哪些常用标签? 如何配置?
<configuration>
这是配置文件的根元素, 所有的其他元素都要在这个标签下
使用.
<environments>
用于管理所有的环境, 并可以指定默认使用哪个环境. 通过
default属性来指定.
<environment>
用于配置环境. id属性用于唯一标识当前环境
<transactionManager>
用于配置事务管理器
type 属性
用于指定 MyBatis 采用何种方式管理事务
- JDBC: 表示 MyBatis 采用与原生 JDBC 一致的方式管理事务
- MANAGED: 表示将事务管理交给其他容器进行, 例如 Spring
<DataSource>
用于配置数据源, 设置 MyBatis 是否使用连接池技术, 并且配置数据库连接的四个参数
type 属性
用于设置 MyBatis 是否使用连接池技术
- POOLED, 表示采用连接池技术
- UNPOOLED, 表示每次都会开启和关闭连接, 不使用连接池技术
- 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 属性
用于设定查询返回的数据类型, 要写类型的全限定路径. 如果返回的是集合类型, 要写集合的泛型的类型.
- 为什么要进行映射扫描? 如何配置?
在MyBatis中, 推荐使用mapper作为包名, 我们只需要写一个映射配置文件即可
使用 xml 文件减少代码量.
- MyBatis三个查询方法_selectList_selectOne_selectMap
- 请描述selectList, selectOne和selectMap三个方法的作用及其中的关系.
selectList
用于查询多条数据的情况, 返回值是一个 list 集合. 如果没有查到任何数据, 返回没有元素的集合(空集合, 不是 null)
selectOne
用于查询单条数据的情况, 返回值是一个对象. 如果没有查到任何数
据, 返回 null
selectMap
用于查询多条数据的情况, 多条数据要形成一个 Map 集合. 需要指定哪个属性作为 key. 如果查不到, 返回一个空 map 集合(不是 null)
- 简述selectMap方法如何使用? 以及返回结果的组成方式.
用于查询多条数据的情况, 多条数据要形成一个 Map 集合. 需要指定哪个属性作为 key. 如果查不到, 返回一个空 map 集合(不是 null)
- Log4J简介_Log4J的五个日志级别
- Log4J简介_Log4J的五个日志级别
FATAL ERROR WARN INFO DEBUG
- Log4J日志级别有哪些? 分别代表什么含义?
FATAL :
致命的, 表示非常严重的错误, 一般是系统错误
ERROR :
错误, 表示代码错误, 比较严重
WARN :
警告, 不影响程序的运行, 但是可能存在风险.
INFO :
信息, 表示一个普通的输出信息
DEBUG
调试, 表示程序员人为的一些调试信息
- Log4J配置文件详解_日志格式简介_日志对象的获取及使用
- 常用的log4j日志格式符号有哪些? 代表什么含义?
- 如何使用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
- 如何使用log4j记录日志?
- 如何在MyBatis中使用Log4J? 如何配置
<settings>用于设置MyBatis 在运行时的行为方式, 例如:
缓存, 延迟加载, 日志等.
<!-- settings标签 -->
<settings>
<!-- 设置MyBatis使用log4j日志支持 -->
<setting name="logImpl" value="LOG4J"/>
</settings>
- 如何设置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
- properties标签实现软编码
- 什么是软编码? 有什么好处?
功能用于加载外部的properties文件
<!-- properties加载外部文件 -->
<properties resource="db.properties" />
- 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 学习相关推荐
- spring 事务中先删除再插入后唯一键冲突 delete then insert duplicate key
今天在同事碰到了一个比较有意思的问题,为了实现某个场景中的数据更新和删除,想通过 delete all entities 然后 insert new entities 的方式减少判断数据是否删除的操作 ...
- REPEATABLE-READ隔离级别 事务中无法读到其它事务提交了的最新数据
前言: 业务要求一个简单的并发控制,使得一条数据只被确认一次,我的方案是 悲观锁,就是在事务中先对数据行加锁(MySQL InnoDB 行锁基于索引),判断是否已经确认过,未确认的情况下确认,已确认则 ...
- mysql innodb事务中_MySQL InnoDB如何保证事务特性示例详解
前言 如果有人问你"数据库事务有哪些特性"?你可能会很快回答出原子性.一致性.隔离性.持久性即ACID特性.那么你知道InnoDB如何保证这些事务特性的吗?如果知道的话这篇文章就可 ...
- 分布式事务中常见的三种解决方案
分布式事务中常见的三种解决方案 目录 一.分布式事务前奏 二.柔性事务解决方案架构 (一).基于可靠消息的最终一致性方案概述 (二).TCC事务补偿型方案 (三).最大努力通知型 三.基于可靠消息的最 ...
- 分布式事务中的三种解决方案详解(转载)
一.分布式事务前奏 快看小说网事务:事务是由一组操作构成的可靠的独立的工作单元,事务具备ACID的特性,即原子性.一致性.隔离性和持久性. 本地事务:当事务由资源管理器本地管理时被称作本地事务.本地事 ...
- 分布式事务中的那些事——微服务总结(二)
文章目录 前言 事务和分布式事务 导致数据不一致的问题 CAP和BASE理论 CAP理论 Base理论 常见的分布式事务解决方案 两阶段提交(2PC) TCC分布式事务 基于本地消息表的最终一致性 基 ...
- Spring 如何在一个事务中开启另一个事务?
Spring项目,需要在一个事务中开启另一个事务. 上面提到的情景可能不常见,但是还是会有的,一旦遇到,如果业务比较复杂,就会很麻烦,但是还是有解决的方案的,比如将一个service方法拆成两个方法, ...
- Mysql 事务中Update 会锁表吗?
Mysql 事务中Update 会锁表吗? 两种情况: 1.带索引 2.不带索引 前提介绍: 方式:采用命令行的方式来模拟 1.mysq由于默认是开启自动提交事务,所以首先得查看自己当前的数据库是否开 ...
- 如果MySQL事务中发生了网络异常?
一 前言 在我们运维MySQL的时候,总会遇到各种情况导致程序和MySQL之间的会话异常中断,比如 假如强制关闭应用 假如client机器突然崩溃宕机/断电 假如网络发生抖动/网卡发生故障 机房级别断 ...
最新文章
- C#编写的生成缩略图程序
- LeetCode集锦(八) - 第26题 Remove Duplicates From Sorted Array
- 设置了hover伪类中有cursor:hand但是没有效果
- 关于js复制文本信息(按钮级别)
- 设计模式(中介者模式-对象去耦)
- 我对计算机网络的期待,表白对女朋友说的情话短句 我愿是你最期待的风景线...
- shell里写个简单循环
- NVIDIA Jetson TK1学习与开发——手动刷机
- HTML+JavaScript简单搜索功能实现
- Xshell连接centOS7
- 奉劝学弟学妹,学完JavaScript就该学TypeScript了,让我们一起了解TypeScript和如何去搭建运行环境吧
- JS进阶 Day1 作用域 函数进阶 结构赋值(学习笔记)
- mysql match against_mysql全文模糊搜索MATCH AGAINST方法
- Python3网络爬虫使用User Agent和代理IP隐藏身份
- VS2010 文件存取之CStdioFile
- 领导提拔你,第三看能力,第二看态度,第一看…
- 诺基亚5320微信提示服务器繁忙,诺基亚5320XM刷机要注意 RM409刷6.13失败的经历
- (全网最细)顺序栈详解 +实例解析
- 搞搞电脑微信表情的破解(.dat转png or jpg)
- iPhone 6plus 分辨率 为什么是 1242 2208