首页 > 其他分享 >MyBatis 配置详解

MyBatis 配置详解

时间:2023-05-05 21:37:28浏览次数:40  
标签:配置文件 数据源 配置 别名 mybatis 详解 user MyBatis

目录

mybatis-config.xml 核心配置文件

mybatis-config.xml 包含的内容如下

  • configuration(配置)
  • properties(属性)
  • settings(设置)
  • typeAliases(类型别名)
  • typeHandlers(类型处理器)
  • objectFactory(对象工厂)
  • plugins(插件)
  • environments(环境配置)
  • environment(环境变量)
  • transactionManager(事务管理器)
  • dataSource(数据源)
  • databaseIdProvider(数据库厂商标识)
  • mappers(映射器)

注意元素节点的顺序!顺序不对会报错

1. environments元素

<environments default="development">
 <environment id="development">
   <transactionManager type="JDBC">
     <property name="..." value="..."/>
   </transactionManager>
   <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>
 <environment id="test">
   <transactionManager type="JDBC">
     <property name="..." value="..."/>
   </transactionManager>
   <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>
  • environments配置mybatis 多套环境,将sql 映射到多个不同的数据库上,必须指定一个默认环境,即default="development"

1.1 子元素environment

其中dataSource 数据源(共三种内建的数据源类型)

        type="[UNPOOLED|POOLED|JNDI]")
  • unpooled:这个数据源的实现只是每次被请求时打开和关闭连接
  • pooled:这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来 , 这是一种使得并发 Web 应用快速响应请求的流行处理方式。
  • jndi:这个数据源的实现是为了能在如 Spring 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。
    注: 数据源也有很多第三方的实现,比如dbcp,c3p0,druid等等....

1.2 transactionManager 事务管理器(共两种)

        <transactionManager type="[ JDBC | MANAGED ]"/>

2. mappers 元素(定义映射SQL语句文件)

主要用于找到sql语句的文件在哪里?可以使用不同的方式引用sql语句 具体的引用方式如下

  • 使用相对路径引入sql语句的文件
<!-- 使用相对于类路径的资源引用 -->
<mappers>
 <mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>
  • 使用完全限定资源定位符(URL)
<!-- 使用完全限定资源定位符(URL) -->
<mappers>
 <mapper url="file:///var/mappers/AuthorMapper.xml"/>
</mappers>
  • 使用映射器接口实现类的完全限定类名,需要配置文件名称和接口名称一致,并且位于同一目录下
<!--
使用映射器接口实现类的完全限定类名需要配置文件名称和接口名称一致,并且位于同一目录下
-->
<mappers>
 <mapper class="org.mybatis.builder.AuthorMapper"/>
</mappers>
  • 将包内的映射器接口实现全部注册为映射器但是需要配置文件名称和接口名称一致,并且位于同一目录下
<!--
将包内的映射器接口实现全部注册为映射器.但是需要配置文件名称和接口名称一致,并且位于同一目录下
-->
<mappers>
 <package name="org.mybatis.builder"/>
</mappers>

**mapper配置文件
主要用用关联dao接口中的方法,并书写sql语句 相当于实现了接口中的各个方法

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.xiezhr.dao.UserMapper">
    <select id="getUserList" resultType="com.xiezhr.pojo.User">
     select * from mybatis.user;
    </select>

    <insert id="addUser" parameterType="com.xiezhr.pojo.User">
        insert into mybatis.user values(#{id},#{name},#{pwd})
    </insert>

    <update id="updateUserById" parameterType="int">
        update mybatis.user set name='小头爸爸' where id=#{id}
    </update>

    <delete id="deleteUserById" parameterType="int">
        delete from mybatis.user where id=#{id}
    </delete>
</mapper>

3.properties

  • 我们都知道在java开发中,通过properties文件来配置一些参数。这我们就要通过db.properties文件来配置连接数据库的各个属性

具体步骤如下

(1)编写db.properties 文件

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

(2)在mybatis核心配置文件中加在外部配置文件来连接数据库

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <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="com/xiezhr/Dao/UserMapper.xml"></mapper>
    </mappers>
</configuration>

4. typeAliases(定义别名)

  • 类型别名是为java类型这只一个短的名字。意义在于用来减少过长类名的冗余

(1)自定义javabean别名

<typeAliases>
        <typeAlias type="com.xiezhr.pojo.User" alias="user"/>
</typeAliases>

如上配置之后就可以在任何地方用user 代替 com.xiezhr.pojo.User配置别名也可按照下面方式配置

(2)配置所有com.xiezhr.pojo 包下的Javabean别名为小写的类名

<typeAliases>
   <package name="com.xiezhr.pojo"/>
</typeAliases>

通过上述配置之后,以下的xml即等价

<select id="getUserList" resultType="user">
     select * from mybatis.user;
</select>
<select id="getUserList" resultType="com.xiezhr.pojo.user">
     select * from mybatis.user;
</select>

其他配置【设置】

设置常用的有如下几个

  • 懒加载
  • 日志实现
  • 缓存的开启与关闭
    下面是一个完整的setting元素示例
<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>

标签:配置文件,数据源,配置,别名,mybatis,详解,user,MyBatis
From: https://www.cnblogs.com/xiezhr/p/17343395.html

相关文章

  • 配置wordpress:添加分享到QQ空间功能(wordpress 6.2)
    一,添加代码:1,代码:<atarget="_blank"href='http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?title=<?phpthe_title();?>&desc=&summary=&site=&pics=&url=<?phpechourlencode(get_permalink());?>�......
  • gcc命令详解
    gcc命令详解gcc命令使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最普遍的编译器,具备功能强大,编译代码支持性能优化等特色,目前,GCC能够用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据须要选择安装支持的语言。在执行编译工作的时候,总共需要4步:1、预处理,生成......
  • P64 构造器详解
     类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下特点:1.必须和类的名字相同2.必须没有返回类型,也不能写void作用:1.new本质在调用构造方法2.初始化对象值注意点:1.定义有参构造之后,如果想使用无参构造,显示的定义一个无参的构造 al......
  • yaml配置注入
    配置文件SpringBoot使用一个全局的配置文件,配置文件名称是固定的application.properties语法结构:key=valueapplication.yml语法结构:key:空格value配置文件的作用:修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了yaml注入配置文件yaml可......
  • 配置wordpress:添加分享到豆瓣功能(wordpress 6.2)
    一,代码:1,代码:<atarget="_blank"href='https://www.douban.com/share/service?href=<?phpthe_permalink();?>&name=<?phpthe_title();?>&text=&image=&starid=0&aid=0&style=11'><imgid=&qu......
  • Spring整合Mybatis
    1、Spring整合Mybatis思路分析1.1、环境准备在准备环境的过程中,我们也来回顾下Mybatis开发的相关内容:步骤1:准备数据库表Mybatis是来操作数据库表,所以先创建一个数据库及表createdatabasespring_dbcharactersetutf8;usespring_db;createtabletbl_account(id......
  • C++ - VS2019配置pthread线程库
    说明在VS里用MS编译器不能直接调用pthread库,需要先自行下载该库:http://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip解压后用的到的只有Pre-built.2文件夹下的文件。 配置如下图分别配置三大项:包含目录-->...pthreads-w32-2-9-1-release\Pre-built.......
  • C# .net 6 Log4net 安装、配置 以及相关问题处理
    安装log4net首先下载相关Nuget包安装的时候注意项目的.net版本,我这里使用的是.net6在根目录下面新建一个配置文件log4net.config,并且添加下面相关配置项目<?xmlversion="1.0"encoding="utf-8"?><configuration> <log4net> <!--将日志以回滚文件的形式写到文件中-......
  • flask--app.add_url_rule()函数 和 类视图详解
    flask--app.add_url_rule()函数和类视图详解app.add_url_rule()函数在flask中,我们知道给一个函数添加url的时候,只需要使用装饰器@app.route('')装饰对应的函数就可以了。为什么这个装饰器就可以给函数视图添加url规则呢?查看app.route()源码发现,这个装饰器在里面调用的另外一......
  • 企业vsftp搭建,通过虚拟用户配置实现权限个性化设置需求
    1,安装必要的软件包yuminstall-yvsftpdlibdb-utils2,设置虚拟账号信息(使用文件存储)2.1创建明文账户信息#vim/etc/vsftpd/vuser_listlinghu123456peng1234562.2创建数据库账户信息db_load-T-thash-f/etc/vsftpd/vuser_list/etc/vsftpd/vuser_list.db3,设置基于虚拟用......