返回顶部
首页 > 资讯 > 精选 >Mybatis中properties和settings标签如何使用
  • 589
分享到

Mybatis中properties和settings标签如何使用

2023-06-20 15:06:49 589人浏览 薄情痞子
摘要

mybatis中properties和settings标签如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Mybatis properties标签和settings标

mybatis中properties和settings标签如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

Mybatis properties标签和settings标签

如下面的例子:

<?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="jdbc.properties"><!-- <property name="database.driver" value="com.mysql.jdbc.Driver"/> <property name="database.url" value="jdbc:Mysql://localhost:3306/chapter4"/> <property name="database.username" value="root"/> <property name="database.passWord" value="123456"/> --></properties><typeAliases><!-- 别名 --><!-- <typeAlias alias="role" type="com.learn.SSM.chapter4.pojo.Role"/> --><package name="com.learn.ssm.chapter4.pojo" /></typeAliases><typeHandlers><!-- <typeHandler jdbcType="VARCHAR" javaType="string" handler="com.learn.ssm.chapter4.typehandler.MyTypeHandler" /> --><package name="com.learn.ssm.chapter4.typehandler" /> </typeHandlers><!-- 数据库环境 --><environments default="development"><environment id="development"><transactionManager type="JDBC" /><dataSource type="com.learn.ssm.chapter4.datasource.DbcpDataSourceFactory"><property name="driver" value="${database.driver}" /><property name="url" value="${database.url}" /><property name="username" value="${database.username}" /><property name="password" value="${database.password}" /></dataSource></environment></environments>    <!-- <databaseIdProvider type="DB_VENDOR"><property name="oracle" value="oracle" /><property name="mysql" value="mysql" /><property name="DB2" value="db2" /></databaseIdProvider> --><databaseIdProvidertype="com.learn.ssm.chapter4.databaseidprovider.MyDatabaseIdProvider"><property name="msg" value="自定义DatabaseIdProvider" /></databaseIdProvider><mappers><package name="com.learn.ssm.chapter4.mapper" /></mappers></configuration>

需要注意的是mybatis的配置项不能够相互颠倒,如果颠倒了他们的顺序,那么在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></properties><settings></settings><typeAliases></typeAliases><typeHandlers></typeHandlers><objectFactory type=""></objectFactory><plugins></plugins><environments default=""><environment id=""><dataSource type=""></dataSource><transactionManager type=""></transactionManager></environment></environments><databaseIdProvider type=""></databaseIdProvider><mappers></mappers></configuration>

1.properties属性

properties属性是用来给系统配置一些参数,可以放在xml文件或者是properties文件中,而不是放在java 的编码中,这样的好处是方便管理和修改,而不会引起代码的重新编译,一般而言,有以下3种配置方式:

properties子元素:

<property name="database.driver" value="com.mysql.jdbc.Driver"/><property name="database.url" value="jdbc:mysql://localhost:3306/chapter4"/> <property name="database.username" value="root"/> <property name="database.password" value="123456"/>

如上面及格对数据库连接参数的设定,我们需要在property标签内部标识属性名称和属性值。这种方式将配置的属性的名称和对应的属性值记录在xml文件中。同时也可以采用占位符引用管理,这个在代码的编写中经常见到,是一种较为流行的操作方式。

<property name="driver" value="${database.driver}" /><property name="url" value="${database.url}" /><property name="username" value="${database.username}" /><property name="password" value="${database.password}" />

如上面属性的赋值方式,采用的占位符引用的方式,将上文中写好的值通过占位的方式引用过来,这样写的话还需要我们在上面的properties标签下面定义properties的子元素,类似于所示的例子一样。

使用properties文件:

这就需要我们创建一个properties的文件:

database.driver=com.mysql.jdbc.Driverdatabase.url=jdbc:mysql://localhost:3306/chapter4database.username=rootdatabase.password=123456

我们想利用这个文件中所定义的值,则需要在<properties>标签的resource 进行赋值,其值为包的路径,使用方式如下(假设文件名为jdbc.properties):

<properties resource="jdbc.properties" />

这样可以将多个键值饭在一个properties文件中,方便以后的修改和管理。同时,也可以结合上面的占位符的方式进行传递。

使用程序传递方式传递参数:

某些情况下数据库的用户密码数对开发人员和其他人员保密的,运维人员为了保密一般的都需要把用户名和密码进行加密,然后配置到properties文件中,此时往往需要解密才能到到真实的用户名和密码数据库也不可能使用已经加密的字符串去链接数据库。所以假设已经有一个操作解密的工具,我们需要解密人后重置到properties文件中:

public class SqlSessionFactoryUtils { private final static Class<SqlSessionFactoryUtils> LOCK = SqlSessionFactoryUtils.class; private static SqlSessionFactory sqlSessionFactory = null; private SqlSessionFactoryUtils() {} public static SqlSessionFactory getSqlSessionFactory() {synchronized (LOCK) {if (sqlSessionFactory != null) {return sqlSessionFactory;}String resource = "mybatis-config.xml";InputStream inputStream;try { inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);采用程序传递加密参数,启用它之前,修改用户密码为密文..InputStream in = Resources.getResourceAsStream("jdbc.properties");Properties props = new Properties();props.load(in);String username = props.getProperty("database.username");String password = props.getProperty("database.password");// 解密用户和密码,并在属性中重置props.put("database.username", CodeUtils.decode(username));props.put("database.password", CodeUtils.decode(password));inputStream = Resources.getResourceAsStream(resource);// 使用程序传递的方式覆盖原有的properties属性参数sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream, props);} catch (IOException e) {e.printStackTrace();return null;}return sqlSessionFactory;}} public static SqlSession openSqlSession() {if (sqlSessionFactory == null) {getSqlSessionFactory();}return sqlSessionFactory.openSession();} public static void main(String[] args) {System.out.println(CodeUtils.encode("root"));System.out.println(CodeUtils.encode("123456"));} static class CodeUtils {private static String encode(String src) {BASE64Encoder encoder = new BASE64Encoder();return encoder.encode(src.getBytes());} private static String decode(String des) {BASE64Decoder decoder = new BASE64Decoder();try {return new String(decoder.decodeBuffer(des));} catch (IOException e) {e.printStackTrace();}return null;}}}

这里面制作了一个基于程序传递的方式传递参数的例子,首先使用Resource对象读取一个jdbc.properties文件,然后获取原来的配置的用户名和密码,并进行解密,重置,最后使用SqlSessionFactoryBuilder类的biuld方法传递properties中的参数完成覆盖原来的密文,及解决了安全问题,又能够安全的去连接数据库。

2.Settings标签设置

这个是mybatis中最为复杂的配置,这个标签中的设置能够深刻的影响到底层的运行,但是大部分情况下使用默认的配置就可以运行,不需要去配置这个属性,多多数情况下修改一些常用的规则就可以了,比如自动映射,驼峰命名映射,级联规则,是否开启缓存,执行器类型等等。

<!-- settings是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。 -->      <settings>          <!-- 该配置影响的所有映射器中配置的缓存的全局开关。默认值true -->        <setting name="cacheEnabled" value="true"/>        <!--延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态。默认值false  -->        <setting name="lazyLoadingEnabled" value="true"/>          <!-- 是否允许单一语句返回多结果集(需要兼容驱动)。 默认值true -->        <setting name="multipleResultSetsEnabled" value="true"/>        <!-- 使用列标签代替列名。不同的驱动在这方面会有不同的表现, 具体可参考相关驱动文档或通过测试这两种不同的模式来观察所用驱动的结果。默认值true -->        <setting name="useColumnLabel" value="true"/>        <!-- 允许 JDBC 支持自动生成主键,需要驱动兼容。 如果设置为 true 则这个设置强制使用自动生成主键,尽管一些驱动不能兼容但仍可正常工作(比如 Derby)。 默认值false  -->        <setting name="useGeneratedKeys" value="false"/>       <!--  指定 MyBatis 应如何自动映射列到字段或属性。 NONE 表示取消自动映射;PARTIAL 只会自动映射没有定义嵌套结果集映射的结果集。 FULL 会自动映射任意复杂的结果集(无论是否嵌套)。 -->        <!-- 默认值PARTIAL -->        <setting name="autoMappingBehavior" value="PARTIAL"/>                <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>       <!--  配置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语句(prepared statements); BATCH 执行器将重用语句并执行批量更新。默认SIMPLE  -->        <setting name="defaultExecutorType" value="SIMPLE"/>        <!-- 设置超时时间,它决定驱动等待数据库响应的秒数。 -->        <setting name="defaultStatementTimeout" value="25"/>                <setting name="defaultFetchSize" value="100"/>        <!-- 允许在嵌套语句中使用分页(RowBounds)默认值False -->        <setting name="safeRowBoundsEnabled" value="false"/>        <!-- 是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射。  默认false -->        <setting name="mapUnderscoreToCamelCase" value="false"/>        <!-- MyBatis 利用本地缓存机制(Local Cache)防止循环引用(circular references)和加速重复嵌套查询。               默认值为 SESSION,这种情况下会缓存一个会话中执行的所有查询。              若设置值为 STATEMENT,本地会话仅用在语句执行上,对相同 SqlSession 的不同调用将不会共享数据。  -->        <setting name="localCacheScope" value="SESSION"/>        <!-- 当没有为参数提供特定的 JDBC 类型时,为空值指定 JDBC 类型。 某些驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER。  -->        <setting name="jdbcTypeForNull" value="OTHER"/>      <!--   指定哪个对象的方法触发一次延迟加载。  -->        <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>      </settings>

关于Mybatis中properties和settings标签如何使用问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

--结束END--

本文标题: Mybatis中properties和settings标签如何使用

本文链接: https://lsjlt.com/news/298002.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Mybatis中properties和settings标签如何使用
    Mybatis中properties和settings标签如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Mybatis properties标签和settings标...
    99+
    2023-06-20
  • Mybatis配置之properties和settings标签的用法
    Mybatis properties标签和settings标签 本次将讲述mybatis的配置,主要的配置是基于mybatis的配置文件来进行配置的,其配置文件并不复杂 如下面的例子...
    99+
    2024-04-02
  • Mybatis中typeAliases标签和package标签使用
    目录typeAliases标签和package标签的使用1、typeAliases2、packageproperties,typeAliases,package三个标签使用以及细节t...
    99+
    2024-04-02
  • HTML中sup标签和sub标签如何使用
    本篇内容主要讲解“HTML中sup标签和sub标签如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HTML中sup标签和sub标签如何使用”吧! 在HT...
    99+
    2024-04-02
  • Mybatis的where标签如何使用
    这篇文章主要讲解了“Mybatis的where标签如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mybatis的where标签如何使用”吧!原始的手动拼接在不使用...
    99+
    2023-06-30
  • 使用MyBatis如何动态调用SQL标签
    今天就跟大家聊聊有关使用MyBatis如何动态调用SQL标签,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、动态SQL片段通过SQL片段达到代码复用 <!--&nb...
    99+
    2023-05-31
    mybatis sql标签
  • Mybatis sqlMapConfig.xml中的mappers标签使用
    目录sqlMapConfig.xml中的mappers标签mappers(映射配置)1.1:通过resource加载单个映射文件1.2:通过mapper接口加载单个映射文件1.3:批...
    99+
    2024-04-02
  • mybatis的<choose>标签使用
    记录:418 场景:使用MyBatis的标签的标签的test属性,对入参属性的值做非null(!=null)、非空(!='')判断,或者与常量做相等(==)或者不等判断(!=)。 版本:JDK 1.8,Spring Boot 2.6.3,m...
    99+
    2023-09-22
    mybatis choose标签使用 Java ORM框架
  • MyBatis动态<if>标签如何使用
    这篇文章主要介绍“MyBatis动态<if>标签如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MyBatis动态<if>标签如何使用”文章能帮助大家解决问题。一. i...
    99+
    2023-07-05
  • 如何在MyBatis动态SQL项目中使用trim标签
    这期内容当中小编将会给大家带来有关如何在MyBatis动态SQL项目中使用trim标签,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。具体方法如下:select * from user   <...
    99+
    2023-05-31
    mybatis sql trim
  • html中如何使用Object和EMBED标签
    html中如何使用Object和EMBED标签,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 定义和用法 定义一个...
    99+
    2024-04-02
  • Mybatis中where标签与if标签怎么结合使用
    这篇文章主要介绍“Mybatis中where标签与if标签怎么结合使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mybatis中where标签与if标签怎么结合使用”文章能帮...
    99+
    2023-07-05
  • Mybatis中resultMap标签和sql标签的设置方式
    目录resultMap标签和sql标签的设置1、项目目录2、数据库中的表的信息3、配置文件的信息4、User类5、IUserDao接口6、MybatisTest7、运行结果resul...
    99+
    2024-04-02
  • Mybatis | Mybatis标签collection一对多的使用
    Mybatis标签collection一对多的使用 一、colleciton 标签二、collection使用方法1. 方法一: 嵌套结果映射2. 方法二: 嵌套select 查询 三、 ...
    99+
    2023-09-05
    mybatis java mysql
  • Trim标签在Mybatis中的使用方法
    Trim标签在Mybatis中的使用方法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。具体代码如下所示:<update id="updateAu...
    99+
    2023-05-31
    mybatis trim
  • mybatis中<choose>标签怎么使用
    本文小编为大家详细介绍“mybatis中<choose>标签怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“mybatis中<choose>标签怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一...
    99+
    2023-06-30
  • HTML中如何定义和使用div标签
    HTML中如何定义和使用div标签,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。HTML<div>标签定义和用法<div...
    99+
    2024-04-02
  • Mybatis中where标签与if标签结合使用详细说明
    目录前言使用<where>标签总结不使用<where>标签总结前言 由于不小心将and或者or写在了语句后面,导致mybatis无法自主判...
    99+
    2023-03-03
    mybatis where标签 mybatis where mybatis if标签
  • HTML5中ol标签如何使用
    本篇文章为大家展示了HTML5中ol标签如何使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。定义和用法<ol> 标签定义有序列表。HTML 4.01 ...
    99+
    2024-04-02
  • html中如何使用fieldset标签
    这篇文章主要为大家展示了“html中如何使用fieldset标签”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“html中如何使用fieldset标签”这篇文章吧...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作