脚本宝典收集整理的这篇文章主要介绍了Mybatis笔记之配置文件,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
接口式编程, 原生 : DAO ===>
DaoImpl Mybatis: Mapper ===>
xxMapper.xml
SqlSession 代表和数据库的一次会话, 使用结束必须关闭
SqlSession 与 Connection 一样 线程不安全, 导致线程冲突 每次使用都应该创建新的对象
xxxmapper接口没有实现类,但是mybatis会为这个接口生成一个代理对象 (将接口与xml文件绑定) xxxMapper mapper = sqlSession.getMapper(xxxmapper.class)
两个重要配置文件
mybatis全局配置文件:包含数据库连接池信息,事务管理器信息等,系统运行环境
sql映射文件:保存了sql语句映射信息(返回结果信息,sql语句, 占位符参数) , 将接口方法与 sql语句绑定起来,将sql抽取出来
具体代码点此转跳
mybatis全局配置文件标签:配置文件在 Configuration()里面可以看到
标签顺序(不能乱) |
---|
properties
: 引入来自外部的properties
配置文件的内容
<properties resource="dbconfig.properties"></properties>
属性:
resource
: 引入类路径下的资源
url
: 引入磁盘路径/网络路径的资源
设置Mybatis运行时行为
settings
:
mapUnderscoreToCamelCase
:是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn。
属性: true/false
别名处理器
typeAliases
: 为 java类型起别名
为每个类起别名:<typeAlias type="类型" alias= "完整别名">
属性:
type : 指定要起别名的类型全类名,默认别名就是类名小写 user
alias: 自定义别名
批量起别名 <package name="包全路径"/>
为某个包下所有类批量起别名 属性:
name: 指定当前包下的所有后代包每个类都起一个默认别名(类名小写)别名不区分大小写
批量起别名情况下出现别名冲突: 在类中设置注解 @Alias("...")
为类型指定新的别名
别名 | 映射的类型 |
---|---|
_byte | byte |
_long | long |
_short | short |
_int | int |
_integer | int |
_double | double |
_float | float |
_boolean | boolean |
string | String |
byte | Byte |
long | Long |
short | Short |
int | Integer |
integer | Integer |
double | Double |
float | Float |
boolean | Boolean |
date | Date |
decimal | BigDecimal |
bigdecimal | BigDecimal |
object | Object |
map | Map |
hashmap | HashMap |
list | List |
arraylist | ArrayList |
collection | Collection |
iterator | Iterator |
类型处理器
<typeHandlers>
:
环境处理器
<environments default: "id">
根据 enviroment 的 id 快速切换环境
id : 标识不同的环境 , 可以在 environments default标签中设置 不同的id , 快速切换
<environment>
: 配置一个具体的环境信息 必须有 以下两个标签:
事务管理器 <transactionMangager type = "">
:
type: 表示事务管理器类型 【JDBC事务控制方式 | Managed(服务器容器方式)】两种
JDBC(JdbcTransactionFactory)
jdbc事务控制方式
Managed(ManagedTransactionFactory)
服务器容器方式
自定义事务管理器 : 实现 接口 TransactionFactory
数据源类型 <dataSource type=" ">
: type : 表示数据源
Unpooled(UnpooledDataSourceFactory)
: 不使用连接池
pooled(pooledDataSourceFactory)
: 使用连接池
jndi(JndiDataSourceFactory)
:Jndi方式
自定义数据源:实现接口 DataSourceFactory
<environments default="oracle_development"> <!-- 切换到oracle开发环境 -->
<environment id="mysql_development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!-- 数据库连接信息 -->
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
<!--oracle开发环境-->
<environment id="oracle_development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
配置数据库厂商
<databaseIdProvider type = "DB_vendor">
type: 表示数据库厂商🔴需要在 xxxMapper.xml 的 select 等 sql标签中 设置
databaseId = " "
<select id="getUser" resultType="user" databaseId="mysql"> select * from jdbc_learn.user where id = #{id} </select>
🚀 如何有两个注入的select 标签 , 一个带有 databaseId 一个没有databaseID , 则没有DatabaseId的select标签将会被舍弃
得到数据厂商的标识:type = "DB_vendor"
: VendorDatabaseIdProvider mybatis根据数据库厂商执行不同的SQL【驱动自带】
设置数据库厂商别名
: <property name = "MySQL" value = "mysql">
【需要在Mapper.xml中设置 databaseId = "..."】
<databaseIdProvider type="DB_VENDOR">
<property name="MySQL" value="mysql"/>
<property name="Oracle" value="oracle"/>
</databaseIdProvider>
作用:将 sql映射 注册到 全局配置中
引用类路径下的映射文件:resource = "xxx.xml"
引用磁盘/网路路径下的映射文件: url = "xxx.xml"
引用接口 : class = ""
👺 注意事项1: 接口文件 与 映射.xml 文件 同名
👹 注意事项2: 接口文件与映射文件 在同一个包下
基于注解
注册sql映射xxxMapper 文件
🔴 重要,复杂的DAO接口 ===> SQL映射文件
🔵 不重要,简单的DAO接口 ===> 注解方式
批量注册:<package name = "接口的报名">
作用: 将同个包下的 所有的 同名的 xml 文件和接口sql映射 注册到Mybatis中
👹注意事项:接口文件与映射文件 在同一个包下
<!-- 每个Mapper.xml都需要在Mybatis核心配置文件中注册 -->
<mappers>
<mapper resource="com/lzw/dao/UserMapper.xml"/>
<mapper url = "....UserMapper.xml"/>
<mapper class = "接口路径"/>
<package name="com.lzw.dao"/>
</mappers>
/* *
* 基于注解注册 Mapper sql映射文件
* @Author zhongweiLee
* @Description
* @Date 20:47 2022/4/13
* @ParamsType
* @ParamsName
* @return
**/
public interface UserMapperAnnotation {
@Select("select * from user where id = #{id}")
public User getUserById(Integer id);
}
/*-----------------------------------------------------------------------*/
@Test
/* *
* 使用注解注册sql映射文件 测试
* @Author zhongweiLee
* @Description
* @Date 14:40 2022/4/13
* @ParamsType []
* @ParamsName []
* @return void
**/
public void test2(){
/* ***
*
* 1. 获取sqlSessionFactory对象
* 2. 获取sqlSession
* 3. sqlSession.getMapper(接口.class) 获取接口实现类对象
* 会为接口自动创建一个代理对象,代理对象执行增删改查操作
* 4. 调用接口方法 mapper.getUser()方法
*/
try (SqlSession sqlSession = MybatisUtils.getSqlSession()) {
// UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//使用注解注册sql映射文件 测试
UserMapperAnnotation mapper = sqlSession.getMapper(UserMapperAnnotation.class);
System.out.println(mapper.getClass());//获取当前mapper所属类
User user = mapper.getUserById(1);
System.out.println(user);
} catch (Exception e) {
e.printStackTrace();
}
}
以上是脚本宝典为你收集整理的Mybatis笔记之配置文件全部内容,希望文章能够帮你解决Mybatis笔记之配置文件所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。