Mybatis的第一天学习
1、Mybatis是一个ORM框架,用于操作数据库,底层是对JDBC进行封装
2、Mybatis的前身是iBatis,是Apache下的一个开源框架,现在被迁移到GitHub上
3、中文网址:www.mybatis.org/mybatis-3/zh/getting-started.html
3、Mybatis环境搭建
3.1、创建项目
java project
3.2导入jar包
3.2.1Mybatis核心jar包
mybatis-3.2.7.jar
3.2.2Mybatis依赖jar包
asm-3.3.1.jar //字节码解析包ciglib依赖的包
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 //日志包
3.2.3驱动包
mysql-connector-java-5.1.30.jar //数据库驱动包
3.3、编写配置文件
1、是一个xml文件、明明无要求,位置无要求、一般叫mybatis.xml,放在src目录下
2、mybatis配置文件的dtd约束
<?xml version="1.0" encoding="UTF-8"?>
3.4、定义pojo类
3.5、Mapper映射文件
在Mybatis中,推荐使用mapper作为包名,我们只需要写一个映射配置文件即可,还是xml,命名为pojo类名加Mapper,例如:UserMapper.xml,用于定义要执行的sql语句,同时设定返回结果的类型
课堂笔记
1、Mybatis配置文件详解
1.1configuration
这是配置文件的根元素,所有其他元素都要在这个标签下使用
1.2、environments
用于管理所有环境,并可以指定默认使用哪个环节,通过default属性来指定
1.3、environment
用于配置环境,id属性用于唯一标识当前环境
1.4、transactionManager
用于配置事务管理器
1.4.1、type属性
用于指定Mybatis采用何种方式管理事物
a)JDBC:表示Mybatis采用与原生JDBC一致的方式管理事物
b) managed:表示将事务管理交给其他容器进行,例如Spring
1.5:、DataSource
用于配置数据源,设置mybatis是否使用连接池技术,并且配置数据库连接的四个参数
1.5.1、type属性
用于Mybatis是否使用连接池技术
a)POOLED、表示采用连接池技术
b)UNPOOLED、不使用连接池技术,每次都会开启关闭连接
c)JNDI、使用其他容器(例如Spring)提供数据源
1.6、property
用于配置数据库连接参数(driver,url,username,password)
1.7、settings
<settings>
<!-- 设置Mybatis使用log4j日志支持 -->
<setting name="logImpl" value="LOG4J"/>
</settings>
1.8、setting
<!-- 设置Mybatis使用log4j日志支持 -->
1.7mappers
用于扫描mapper信息
2、mapper映射配置文件详解
2.1、mapper
根元素
2.1.1、namespace属性
用于指定命名空间,mybatis是通过namespace+id的方式来指定sql语句的,所以必须指定namespace,通常namespace被配置为全限定路径
2.2、select
用于定义查询语句
2.2.1、id属性
用于唯一表示sql语句,类似于方法的方法名
2.2.2、resultType属性
用于设定查询返回的数据类型,要写类型的全限定路径,如果返回的是集合类型,要写集合的泛型的类型
3、Mybatis中三个常用的查询方法
3.1selectList
用于查询多条数据的情况,返回值是一个list集合,如果没有查到任何数据,返回一个没有元素的集合(空集合,不是null)
3.2、selectOne
用于查询单挑数据的情况,返回值是一个对象,如果没有查到任何数据,返回null
3.3、selectMap
用于查询多条数据的情况,多条数据要形成一个Map集合,如果查不到返回一个空map集合(不是null)
4、log4j
4.1、log4j简介
a)log4j是Apache提供的一筐记录日志的工具
b)log4j既可以将日志信息打印在控制台,也可以打印输出到一个日志文件中
c)log4j可以定制日志的输出格式
d)log4j可以定制日志级别
4.2、日志级别
4.2.1、FATAL
致命的,表示非常严重的错误,一般是系统错误
4.2.2、ERROR
错误,表示代码错误,比较严重
4.2.3、WARN
警告,不影响程序的运行,但是可能存在风险
4.2.4、INFO
信息,表示一些普通的输出信息
4.2.5、DEBUG
调试,表示程序员人为的一些调试信息
4.3、使用log4j
4.3.1、导包
log4j-1.2.17.jar
log4j-api-2.0-rc1.jar
log4j-core-2.0-rc1.jar
4.3.2、配置文件
使用一个log4j.properties的配置文件,会设定log4j的设置信息,例如日志级别,日志输出格式,日志输出方式,日志格式等等
Set root category priority to INFO and its only appender to CONSOLE.
#设置日志级别到info级别,并且只在控制台打印
log4j.rootCategory=INFO, CONSOLE
#log4j.rootCategory=INFO, 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
package com.bjsxt.test;
import org.apache.log4j.Logger;
public class TestLog4j {
public static void main(String[] args) {
//获取日志对象
Logger logger = Logger.getLogger(TestLog4j.class);
//五个日志级别分别对应五个输出方法,方法名和级别名一致
logger.fatal("系统崩溃了!");
logger.error("发现错误!");
logger.warn("警告警告!");
logger.info("消息...");
logger.debug("调试...");
}
}
5、settings
<settings>
<!-- 设置Mybatis使用log4j日志支持 -->
<setting name="logImpl" value="LOG4J"/>
</settings>
6、
7、typeAliases
如果没有写alias,默认别名就是类名比如此处就是:User或者user都可以
当实体类有很多时使用
6、带参数的查询
<select id="selById" resultType="user" parameterType="_int">
<!-- #{}用于使用参数
index,索引 从0开始
param+数字 param1,param2;
-->
<!-- select * from t_user where id=#{0} -->
select * from t_user where id=#{param1}
</select>