Mybatis

一、MyBatis 是一款优秀的持久层框架,是一个半自动化的ORM框架 (Object Relationship Mapping) -->对象关系映射

二、mybatis的配置文件

Mybatis的核心配置文件
mybatis-config.xml 是系统核心配置文件
MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息
2.1、mybatis能配置的内容和顺序
configuration(配置)
properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
        environment(环境变量)
            transactionManager(事务管理器)
            dataSource(数据源)
databaseIdProvider(数据库厂商标识)
mappers(映射器)
<!-- 注意元素节点的顺序!顺序不对会报错 -->

2.2、部分配置详解
(1)properties(属性)
数据库这些属性都是可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,亦可通过 properties 元素的子元素来传递。
第一步 : 在资源目录下新建一个db.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8
username=root
password=123456

第二步 : 将文件导入properties 配置文件

<configuration>
    <!--导入properties文件-->
    <properties resource="db.properties"/>
 
    <environments default="development">
        <environment id="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>
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>

(2)settings(设置)
该标签是mybatis的全局设置,该设置会影响mybatis的运行。
一般我们使用使用该标签来开启二级缓存和懒加载。
以下是几张settings配置项的说明:

一个配置完整的 settings 元素的示例如下:

<settings>
  <setting name="cacheEnabled" value="true"/>
  <setting name="lazyLoadingEnabled" value="true"/>
  <setting name="multipleResultSetsEnabled" value="true"/>
  <setting name="useColumnLabel" value="true"/>
  <setting name="useGeneratedKeys" value="false"/>
  <setting name="autoMappingBehavior" value="PARTIAL"/>
  <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
  <setting name="defaultExecutorType" value="SIMPLE"/>
  <setting name="defaultStatementTimeout" value="25"/>
  <setting name="defaultFetchSize" value="100"/>
  <setting name="safeRowBoundsEnabled" value="false"/>
  <setting name="mapUnderscoreToCamelCase" value="false"/>
  <setting name="localCacheScope" value="SESSION"/>
  <setting name="jdbcTypeForNull" value="OTHER"/>
  <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>


(3)typeAliases(类型别名)
该标签是对pojo类进行别名设置,这样,在后面使用pojo类的时候就可以直接通过别名引用,而不需要通过pojo类的全限定名来引用。这样可以提高我们的开发效率。
首先介绍下Mybatis的默认提供的别名有:

自定义单个别名:这种方式只能定义单个类的别名。
下面的代码就是把com.mybatisstudy.pojo.User类定义为user的别名

    <typeAliases>
        <!-- 设置单个别名 -->
        <typeAlias type="com.mybatisstudy.pojo.User" alias="user"/>
    </typeAliases>

自定义之批量定义别名:

下面代码是把com.lc.mybatis.po类下的所有类都声明别名,默认的别名就是类名(类名大小写都可以)

<!-- 设置别名 -->
    <typeAliases>
        <!-- 批量设置别名 -->
        <!-- package:指定包名称来为该包下的pojo类声明别名,默认的别名就是类名(类名首字母大小写都可以) -->
        <package name="com.mybatisstudy.pojo"/>
    </typeAliases>

(4)(映射器)
mappers标签的作用是加载映射文件
方式一:加载相对于类路径下的映射文件:

<!-- 使用相对于类路径的资源引用 -->
<mappers>
  <mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>

方式二: 使用全限定路径

<!-- 使用完全限定资源定位符(URL) -->
<mappers>
  <mapper url="file:///var/mappers/AuthorMapper.xml"/>
</mappers>

方式三:使用mapper接口的全限定类名

<!--
使用映射器接口实现类的完全限定类名
需要配置文件名称和接口名称一致,并且位于同一目录下
-->
<mappers>
  <mapper class="org.mybatis.builder.AuthorMapper"/>
</mappers>

此方式要求: Mapper接口Mapper映射文件名称相同且在同一个目录下。

方式四:加载指定包下的所有映射文件

<!--
将包内的映射器接口实现全部注册为映射器
但是需要配置文件名称和接口名称一致,并且位于同一目录下
-->
<mappers>
  <package name="org.mybatis.builder"/>
</mappers>

此方式要求: Mapper接口Mapper映射文件名称相同且在同一个目录下。

三、动态SQL:动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句.

使用 mybatis 动态SQL,通过 if, choose, when, otherwise, trim, where, set, foreach等标签,可组合成非常灵活的SQL语句,从而在提高 SQL 语句的准确性的同时,也大大提高了开发人员的效率。

-------------------------------
- if
- choose (when, otherwise)
- trim (where, set)
- foreach
-------------------------------
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值