网站建设与维护方式,大专ui设计师工资一般多少,个人网站布局下载,网站seo入门基础教程一、简介 MyBatis 中文文档 https://mybatis.org/mybatis-3/zh/index.html
1.什么是 MyBatis 概述#xff1a;MyBatis 是一款优秀的持久层框架#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBa…一、简介 MyBatis 中文文档 https://mybatis.org/mybatis-3/zh/index.html
1.什么是 MyBatis 概述MyBatis 是一款优秀的持久层框架它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJOPlain Old Java Objects普通老式 Java 对象为数据库中的记录。 源码地址 https://github.com/mybatis/mybatis-3 源码下载MyBatis 前身是 iBatis 2.和 JDBC 对比
JDBC 缺点 需要自己封装结果集 需要自己处理参数 没有共用性 SQL 写在 java 代码里面耦合度很高
二、入门
1.引入依赖
引入 MyBatis 依赖
dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.6/version
/dependency
引入数据库驱动依赖
dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.29/version
/dependency
引入 junit 测试依赖一般创建项目自带
dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope
/dependency
2.创建MyBatis 项目
创建mybatis 空项目添加模块
3.创建 MyBatis 核心配置文件
3.1简单使用 MyBatis 核心配置
核心配置概述XML 配置文件中包含了对 MyBatis 系统的核心设置包括获取数据库连接实例的数据源DataSource以及决定事务作用域和控制方式的事务管理器TransactionManager。
核心配置 mybatis-config.xml
?xml version1.0 encodingUTF-8 ?
!DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttps://mybatis.org/dtd/mybatis-3-config.dtd
configurationenvironments defaultdevelopmentenvironment iddevelopmenttransactionManager typeJDBC/
!-- 数据库环境--dataSource typePOOLEDproperty namedriver valuecom.mysql.cj.jdbc.Driver/property nameurl valuejdbc:mysql://localhost:3306/mybatis/property nameusername valueroot/property namepassword value123456//dataSource/environment/environments
!-- 映射文件--mappersmapper resourcecn/wjcoder/mapper/0.EmployeeMapper.xml//mappers
/configuration
4.创建 MyBatis 映射文件
4.1创建 xml 映射文件
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttps://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecn.wjcoder.mapper.EmployeeMapperselect idselectEmployee resultTypecn.sycoder.domain.Employeeselect * from Blog where id #{id}/select
/mapper
4.2创建 mapper 接口
public interface EmployeeMapper {/*查询员工信息*/Employee selectEmployee(Param(id) Long id);
}
4.3项目结构 5.准备数据库
5.1数据库名称 mybatis 5.2数据表 employee 并向里面添加两条数据
insert into employee(name,age,address) values(wj,18,上海),(zs,19,北京) 6.从 XML 中构建 SqlSessionFactory
6.1获取SqlSessionFactory
String resource mybatis-config.xml;
InputStream inputStream Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);
注意创建mapper 目录的时候一定要避免建成一个文件要用斜杠不能用点 7.从 SqlSessionFactory 中获取 SqlSession
SqlSession提供了执行 SQL 的所有方法
try (SqlSession session sqlSessionFactory.openSession()) {//获取自定义的mapperEmployeeMapper mapper session.getMapper(EmployeeMapper.class);//使用自定义mapper操作方法Employee employee mapper.selectEmployee(1L);System.out.println(employee);
}
三、XML 配置
1.配置概述
1.配置概述 概述MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息层级结构如下 configuration配置 properties属性 settings设置 typeAliases类型别名 typeHandlers类型处理器 objectFactory对象工厂 plugins插件 environments环境配置 environment环境变量 transactionManager事务管理器 dataSource数据源 databaseIdProvider数据库厂商标识 mappers映射器
2.属性 properties
使用Properties作用这些属性可以在外部进行配置并可以进行动态替换
2.1db.properties 配置
drivercom.mysql.cj.jdbc.Driver
urljdbc:mysql://localhost:3306/mybatis
usernameroot
password123456
2.2先引入 db.properties 配置文件
!--引入properties--properties resourcedb.properties!-- ... --property nameorg.apache.ibatis.parsing.PropertyParser.enable-default-value valuetrue/!-- 启用默认值特性 --/properties 注意要按顺序创建标签否则会报错 2.3可以通过 ${} 去把配置文件中的值取出来
dataSource typePOOLEDproperty namedriver value${driver}/property nameurl value${url}/property nameusername value${username}/property namepassword value${password}/
/dataSource
启用默认值之后可以采用如下的方式配置
dataSource typePOOLEDproperty namedriver value${driver:com.mysql.cj.jdbc.Driver}/ !-- 如果 driver 空取后面值 --property nameurl value${url}/property nameusername value${username}/property namepassword value${password}/
/dataSource
3.设置settings
作用改变 MyBatis 的运行时行为
3.1常用设置
设置名描述有效值默认值cacheEnabled全局性地开启或关闭所有映射器配置文件中已配置的任何缓存。true | falsetruelazyLoadingEnabled延迟加载的全局开关。当开启时所有关联对象都会延迟加载。特定关联关系中可通过设置 fetchType属性来覆盖该项的开关状态。true | falsefalsemapUnderscoreToCamelCase是否开启驼峰命名自动映射即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn。true | falseFalseXML配置 settings
!-- 设置数据库经典下划线命名方式转换成驼峰方式--setting namemapUnderscoreToCamelCase valuetrue//settings
4.类型别名typeAliases
作用类型别名可为 Java 类型设置一个缩写名字它仅用于 XML 配置意在降低冗余的全限定类名书写。
4.1使用全限定类名配置 typeAliases
!-- type 类全限定类名--
!-- alias 表示别名--typeAlias typecn.wjcoder.domain.Employee aliasemp/typeAlias/typeAliases
4.2使用包名方式
typeAliasespackage namecn.sycoder.domain/
/typeAliases
4.3使用注解方式
Alias(author)
public class Author {...
}
4.4常见的 Java 类型内建的类型别名的规律
基本类型前面加下划线引用数据类型使用首字母小写 5.环境配置environments
作用可以获取多数据源可以选用适合要求的数据源。开发、测试和生产环境需要有不同的配置或者想在具有相同 Schema 的多个生产数据库中使用相同的 SQL 映射。
注意尽管可以配置多个环境但每个 SqlSessionFactory 实例只能选择一种环境
代码操作 environments defaulttest
!-- 开发环境--environment iddevelopmenttransactionManager typeJDBC/
!-- 配置数据库连接要素--dataSource typePOOLEDproperty namedriver value${driver:com.mysql.cj.jdbc.Driver}/property nameurl value${url}/property nameusername value${username}/property namepassword value${password}//dataSource/environment
!-- 测试环境--environment idtesttransactionManager typeJDBC/!-- 配置数据库连接要素--dataSource typePOOLEDproperty namedriver value${driver:com.mysql.cj.jdbc.Driver}/property nameurl value${url}/property nameusername value${username}/property namepassword value${password}//dataSource/environment/environments
5.1事务管理器transactionManager
MyBatis 中有两种类型的事务管理器也就是 type[JDBC|MANAGED]。
JDBC-这个配置直接使用了 JDBC 的提交和回滚功能,如果不需要自动提交可以通过设置属性关掉
transactionManager typeJDBCproperty nameskipSetAutoCommitOnClose valuetrue/
/transactionManager
MANAGED – 这个配置几乎没做什么,不提交或回滚一个连接默认情况下它会关闭连接可以设置手动关闭
transactionManager typeMANAGEDproperty namecloseConnection valuefalse/
/transactionManager
5.2数据源dataSource
概述dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。
三种内建的数据源类型 UNPOOLED不使用数据库连接池每次操作数据库都需要获取连接 POOLED使用数据库连接池就是把建立的连接缓存起来下次使用直接拿不需要新建 poolMaximumActiveConnections-在任意时间可存在的活动正在使用连接数量默认值10
poolMaximumIdleConnections – 任意时间可能存在的空闲连接数。 JNDI满足 EJB 或应用服务器这类容器中使用需求可以调用上下文的数据源
6.映射器mappers
6.1作用帮助MyBatis 寻找 sql 语句寻找映射文件
6.2 配置方式
使用相对于类路径的资源引用
mappersmapper resourcecn/wjcoder/mapper/EmployeeMapper.xml/
/mappers
使用映射器接口实现类的完全限定类名
mappersmapper classcn.wjcoder.mapper.EmployeeMapper/
/mappers 将包内的映射器接口全部注册为映射器使用这种必须保证 mapper.xml 和 mapper 文件在同一包下
mapperspackage namecn.wjcoder.mapper/
/mappers
四、日志
为什么现在开始使用日志早学会早使用,方便观察sql的参数信息。
Mybatis 通过使用内置的日志工厂提供日志功能具体的实现
SLF4J Apache Commons LoggingLog4j 2 Log4j 3.5.9 起废弃 JDK logging 使用前加上配置
settings...setting namelogImpl valueLOG4J/.../settings
logImpl 可选的值有SLF4J、LOG4J、LOG4J2、JDK_LOGGING、COMMONS_LOGGING、STDOUT_LOGGING、NO_LOGGING
1.Log4j 配置示例
1.1导入依赖
dependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion1.2.17/version
/dependency
1.2创建 log4j.properties
log4j.rootLoggerERROR, stdoutlog4j.logger.cn.sycoder.mapper.EmployeeMapperTRACElog4j.appender.stdoutorg.apache.log4j.ConsoleAppender
log4j.appender.stdout.layoutorg.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern%5p [%t] - %m%n
1.3设置 mybatis-config.xml
settings
!-- 设置数据库经典命名下划线方式字段转换成驼峰方式--setting namemapUnderscoreToCamelCase valuetrue/
!-- 配置日志--setting namelogImpl valueLOG4J/
/settings
注意忘记配置 setting 也能够自动装载具体请看源码
ERROR WARN INFO DEBUG
五、使用MyBatis增删改查
1.添加操作
1.1添加接口方法
void insert(Param(emp) Employee emp);
1.2添加xml 配置
insert idinsertinsert into employee value(null,#{emp.name},#{emp.age},#{emp.address},#{emp.empDetail})
/insert
2.删除
2.1添加接口方法
void delete(Param(id)Long id);
2.2添加xml 配置
delete iddeletedelete from employee where id #{id}
/delete
3.修改
3.1添加接口方法
void update(Param(emp)Employee emp);
3.2添加xml 配置
update idupdateupdate employee set name #{emp.name} where id #{emp.id}
/update
4.查询
4.1添加接口方法
Employee selectEmployee(Param(id) Long id);
4.2添加xml 配置
select idselectEmployee resultTypecn.wjcoder.domain.Employeeselect * from employee where id #{id}
/select