mybatis学习笔记-03

Posted 宏远小七

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis学习笔记-03相关的知识,希望对你有一定的参考价值。


这篇文章来学习更多的方便我们学习的技巧。

1.引入外部配置文件

在官方文档中的核心配置文件(mybatis-config.xml)中,给出的代码如下图↓,我所指出的4个点都是通过引入外部配置文件实现的。

引入方法

  1. 在resource目录下创建db.properties配置文件
    代码如下:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=root
  1. 在mybatis-config.xml中修改代码

<!--    引入外部配置文件-->
    <properties resource="db.properties"></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>

注意

== xml配置文件修改代码前一定要引入外部文件。==

如果引入外部文件如下代码所写↓:

<!--    引入外部配置文件-->
    <properties resource="db.properties">
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </properties>

可以直接引入外部文件;也可以增加一些属性。
但如果和外部文件有相同字段,优先选择外部文件!也就是两个相同字段,外部配置文件是对的,内部重新写的是错误的,结果是可以运行成功的,反之则运行失败。

2.别名设置

类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。例如:

<typeAliases>
<!--    通过一个类设置别名-->
    <typeAlias type="com.ZXF.pojo.User" alias="user"/>
    <!--    通过包设置别名,别名一般都是用类的小写
    <package name="com.ZXF.pojo"/>     -->
</typeAliases>

设置完别名后,如果是通过类设置别名的只需要在UserMapper.xml中的resultType写入相应的别名就可以了;
在我后续的文章中也会用到别名!

用包设置别名的写对应类的小写类型就可以,有一些基本类型参考文档的别名命名。↓

3.绑定mapper事件

MappersRegistry :注册绑定mapper事件。

  1. 方式一:使用resource注册(推荐使用)
	<mappers>
        <mapper resource="com/ZXF/dao/UserMapper.xml"/>
    </mappers>
  1. 方式二:使用class注册
    <mappers>
        <mapper class="com.ZXF.dao.UserMapper"/>
    </mappers>

这个方法在我下一篇文章中的一个点(使用注解进行简单CRUD时会用到)。

注意点:

  • 接口和它的mapper配置文件必须同名;
  • 接口和它的mapper配置文件必须同一包下。
  1. 方式三:使用package注册
<mappers>
	<package name="com.ZXF.dao"/>
</mappers>

这个方式也是有以下注意↓
注意点:

  • 接口和它的mapper配置文件必须同名;
  • 接口和它的mapper配置文件必须同一包下。

4.结果集映射

resultMap:这个是用于结果集映射,需要和resultType区别;在我上一篇文章的注意点有提到这两个,没看过的可以点这里mybatis学习笔记-02
在我做项目时,有时会命名错属性名,在实体类的命名和数据库对应表的命名不一致时,我们可以通过resultMap来获取数据:
写在接口对应的xml配置文件中:

<resultMap id="byID" type="user">
       <result column="id" property="id"/>
       <result column="name" property="name"/>
       <result column="pwd" property="password"/>
</resultMap>
   <select id="getUserById" resultMap="byID">
       select * from mybatis.user where id=#{id};
   </select>

id要和resultMap的属性名对应,column对应数据库的属性名,property对应实体类的属性名。

关于核心配置文件

这篇文章有几点是要在核心配置文件中设置行为或者属性信息。
这个行为或者属性信息的位置不是可以随意设置的,如果不遵守规范,会报出一下错误;

也就是这一段文字:
The content of element type “configuration” must match “(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?)”.

系统会提示,你必须根据它的规范进行设置。我们也可以从官网中看到,核心配置文件需要按照指定的位置进行行为或者属性信息的设置。


这是我mybatis自学笔记的第3篇,前两篇的链接↓
mybatis学习笔记-01
mybatis学习笔记-02


本篇文章到这就结束了。自学不易,如果写得不详细,可以结合官方文档看,也可以评论区交流,这篇文章有可以优化的地方希望大佬指教指教。

以上是关于mybatis学习笔记-03的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis 学习笔记总结

Mybatis学习笔记:动态SQL

MyBatis学习笔记11:解决字段名和属性的映射关系

MyBatis-05-笔记

学习笔记:python3,代码片段(2017)

java 学习笔记--mybatis 三剑客(mybatis)