Mybatis配置详解

全局配置文件:mybatisConfig.xml

参考文档:https://mybatis.org/mybatis-3/zh/configuration.html#settings
在这里插入图片描述

properties:读取外部资源

这些属性可以在外部进行配置,并可以进行动态替换。既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。例如:

    <properties  resource="db.properties">
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </properties>

在其中对应的属性可以用来替换为需要的动态配置的属性值,比如:

 <dataSource type="POOLED">
         <property name="driver" value="com.mysql.jdbc.Driver"/>
         <property name="url" value="jdbc:mysql://localhost:3306/test"/>
         <property name="username" value="${username}"/>
         <property name="password" value="${password}"/>
 </dataSource>

这个例子中的 username 和 password 将会由 properties 元素中设置的相应值来替换
如果一个属性在不只一个地方进行了配置,那么,MyBatis 将按照下面的顺序来加载:
● 首先读取在 properties 元素体内指定的属性。
● 然后根据 properties 元素中的 resource 属性读取类路径下属性文件,或根据 url 属性指定的路径读取属性文件,并覆盖之前读取过的同名属性。
● 最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性。
因此,通过方法参数传递的属性具有最高优先级,resource/url 属性中指定的配置文件次之,最低优先级的则是 properties 元素中指定的属性。

setting:全局的参数配置

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。 下表描述了设置中各项设置的含义、默认值等。
在这里插入图片描述

typeAliases:类型别名

类型别名是Java类型的短名称,和XML配置有关,存在是在于用来减少类全限定名的冗余,在mapper.xml中,会有很多的Statement,Statement需要的parameterType指定入参类型,需要resultType执行输出参数类型,如果是指定类型需要书写全限定名,不方便开发,可以通过类型别名,较少代码冗余

    <!--类型别名-->
    <typeAliases>
        <!--单个类型定义别名: type:pojo全路径  alias:别名的名称-->
        <typeAlias type="com.tulun.Mybatis.pojo.Student" alias="student"/>
        <!--批量的别名定义 package:指定包名,将包下的所有pojo类定义别名,别名是类型(首字母大写或者小写都可以)-->
        <package name="com.tulun.Mybatis.pojo"/>
    </typeAliases>

Mapper映射器

    <mappers>
        <!--单个文件映射:resource属性一次加载一个文件,
        指定xml文件位置,通过namespace来查找mapper接口文件-->
        <mapper resource="mapper/StudentMapper.xml"/>

        <!--class方式映射:通过mapper接口映射单个文件,
        遵循规则:mapper.java和mapper.xml放在同一个目录下,且命名相同-->
        <!--<mapper class="com.tulun.Mybatis.mapper.StudentMapper"/>-->

        <!--批量mapper的接口扫描规则
         遵循规则:mapper.java和mapper.xml放在同一个目录下,且命名相同-->
        <!--<package name="com.tulun.Mybatis.mapper"/>-->
    </mappers>

Mapper.xml文件详解

CRUD的SQL对应的标签

select标签

    <!--
    查询操作是select标签
    id属性:(必填的)Statement的id是唯一标识,和接口文件中的方法名保持一致
    parameterType:表示输入参数的类型(Pojo,Integer,String...)入参类型也可以是parameterMap(hashMap)两种类型二选1
    resultType(必填):表示输出参数的类型(Pojo,Integer,String) 返回类型也可以是resultMap(hashMap)两种类型二选1
    #{XXX}:表示占位符  XXX:接口方法中的参数名称
    -->
    <select id="selectStudentById"  parameterType="int" rresultType="student">
        select * from student where SID =#{sid}
    </select>

insert标签

<!--
    插入操作是insert标签
    id属性:(必填的)Statement的id是唯一标识,和接口文件中的方法名保持一致
    parameterType:(可选操作)表示输入参数的类型(Pojo,Integer,String...)入参类型也可以是parameterMap(hashMap)两种类型二选1
    useGeneratedKeys:开启主键回写  
    keyColumn:指定数据库的主键
    keyProperty:主键对应的pojo类属性名
    -->
    <insert id="testInsert" parameterMap="" useGeneratedKeys="true" keyColumn="" keyProperty=""

update标签

    <!--
    变更操作是update标签
    id属性:(必填的)Statement的id是唯一标识,和接口文件中的方法名保持一致
    parameterType:(可选操作)表示输入参数的类型(Pojo,Integer,String...)入参类型也可以是parameterMap(hashMap)两种类型二选1
    useGeneratedKeys:开启主键回写
    keyColumn:指定数据库的主键
    keyProperty:主键对应的pojo类属性名
    -->
    <update id="testUpdate" >
        
    </update>

delete标签

    <!--
    删除操作是delete标签
    id属性:(必填的)Statement的id是唯一标识,和接口文件中的方法名保持一致
    parameterType:(可选操作)表示输入参数的类型(Pojo,Integer,String...)入参类型也可以是parameterMap(hashMap)两种类型二选1

    -->
    <delete id="testdelete">
        
    </delete> 

编码详解

  • SqlSessionFactory:会话工厂
    SqlSessionFactory是用来创建会话的:SqlSession
    会话工厂是用来读取全局配置文件,通过SqlSessionFactoryBuilder类来创建
    通过读取配置文件来创建该实例,一般配置文件读取一次即可,可以将SqlSessionFactory设置为单例
  • SqlSession:会话
    对数据库CRUD操作都是都SqlSession来操作的
    SqlSession是线程不安全的,将其设置为方法的局部变量
    一级缓存是基于SqlSession来创建的,mybatis中默认开启一级缓存
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值