认识MyBatis核心配置文件mybatis-config.xml

这个文件名是随意可以起,但为了规范一般都命名为mybatis-config.xml;配置文件与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>
<environments default="development">
<environment id="development">
<!--事务管理器-->
<transactionManager type="JDBC"/>
<!--数据源-->
<dataSource type="POOLED">
<!--旧版mysql应使用com.mysql.jdbc.Driver-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!--useSSL=true 使用安全连接-->
<!--&amp; 转义 &-->
<!--useUnicode=true 防止编码错误-->
<!--characterEncoding=UTF-8 防止中文乱码-->
<property name="url" value="jdbc:mysql://localhost:3306/demo?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
<!--数据库名-->
<property name="username" value="root"/>
<!--数据库密码!!!!-->
<property name="password" value="hytsql"/>
</dataSource>
</environment>
</environments>
<!--mapper-->
<mappers>
<!--到具体的XXXMapper.xml文件 (必须是com/dao/StuMapper.xml而不是com.dao.StuMapper.xml)-->
<mapper resource="com/dao/StuMapper.xml"/>
</mappers>
</configuration>

说明:这部分是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 属性
settings 设置
typeAliases 类型起别名
typeHandlers 类型处理器
objectFactory 对象工厂
environments 环境配置
environment 环境变量
transactionManage 事务管理器
dataSource 数据源
mappers 映射器
注意:在使用这些元素时,注意他们的先后顺序,不然会出错!!!!
properties 属性:导入.properties属性文件,简化配置文件

properties存在的意义就是优化配置,可以将连接数据库的信息添加到一个单独文件,然后在这个核心配置文件中使用peoperties标签引入这个单独的文件。这样就简化了核心配置文件的配置信息。

步骤过程:1、在resources目录下创建一个存放连接数据库的单独文件:db.properties

2、在db.properties文件中编写连接数据库信息

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/demo?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8
username=root
password=hytsql

3、修改mybatis-config.xml配置文件中的内容

<configuration>
<!--引入db.peoperties文件-->
<properties resource="db.properties"/> <environments default="development">
<environment id="development">
<!--事务管理器-->
<transactionManager type="JDBC"/>
<!--数据源-->
<dataSource type="POOLED">
<!--旧版mysql应使用com.mysql.jdbc.Driver-->
<property name="driver" value="${driver}"/>
<!--useSSL=true 使用安全连接-->
<!--&amp; 转义 &-->
<!--useUnicode=true 防止编码错误-->
<!--characterEncoding=UTF-8 防止中文乱码-->
<property name="url" value="${url}"/>
<!--数据库名-->
<property name="username" value="${username}"/>
<!--数据库密码!!!!-->
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!--mapper-->
<mappers>
<!--到具体的XXXMapper.xml文件 (必须是com/dao/StuMapper.xml而不是com.dao.StuMapper.xml)-->
<mapper resource="com/dao/StuMapper.xml"/>
</mappers>
</configuration>
 settings  这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。它可以设置很多功能,这里主要用于开启日志功能
(其它功能可看Mybatis的帮助文档)
1、为什么要开启日志功能
答:是为了方便排错,提高排错效率;在日志功能开启时,如果出现了相关对数据库操作的异常,根据日志的输出内容(大部分指的是输出的SQL语句)很容易发现错误及时改正。
2、如何开启日志
在mybatis-config.xml文件中添加<settings>标签
<!--开启日志  value属性必须写上-->
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>

logImpl说明:

 
设置名 描述 有效值 默认值
logImpl 指定 MyBatis 所用日志的具体实现,未指定时将自动查找。 SLF4J | LOG4J(3.5.9 起废弃) | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING 未设置

3、此时测试在控制台上就会输出相关日志信息

typeAliases 类型别名

在mybatis帮助文档中有基本数据类型、包装类的别名

1、为什么存在类型别名

答:类型别名就是将java类型(类、接口、包等)这些设置一个比较短的名字,这样减少类完全限定名的冗余。

2、使用的方法

第一种(个人更喜欢):在mybatis-config.xml这个核心配置文件中使用<typeAliases>

 <!--给实体类Stu起别名-->
<typeAliases>
<typeAlias type="com.pojo.Stu" alias="stu"/>
</typeAliases>

这种配置后,在任何com.pojo.Stu出现的地方都可以用stu来代替!!!

第二种方式:<typeAliases>标签与注解联合使用

首先在核心配置文件上添加

 <!--指定包后mybatis会在包下扫描需要的javabean-->
<typeAliases>
<package name="com.pojo"/>
</typeAliases>

然后在该包下需要起别名的类上使用@Alias注解

//stu是新起的别名
@Alias("stu")
@Data
public class Stu {
private int sno;
private String sname;
private int sage;
private String saddress;
private String spwd;
}

这种配置后,同样在任何com.pojo.Stu出现的地方都可以用stu来代替!!!

3、测试

在StuMapper.xml文件中修改resultType属性值

<mapper namespace="com.dao.StuMapper">
<!--起别名的效果:resultType将com.pojo.Stu替换成stu-->
<select id="queryAll" resultType="stu">
<!--sql语句:查询-->
select * from stu;
</select>

environments 环境配置

environment 环境变量

transactionManage 事务管理器

dataSource 数据源
1、这四个共同使用来配置有关连接数据库的信息
<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>
2、在MyBatis中可以配置多个environment运行环境,这样可以将SQL映射到不同的多个数据库上,但是每次都需要environments
来指定此次的运行环境。
每一个environment运行环境都有一个id属性(如:id="development"),在environments中有一个default属性(如:id="development"),
其属性值用于指定默认的运行环境 (id属性值理论上可以随意起)

不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。

所以,如果你想连接两个数据库,就需要创建两个 SqlSessionFactory 实例,每个数据库对应一个。而如果是三个数据库,就需要三个实例,依此类推,记起来很简单:

  • 每个数据库对应一个 SqlSessionFactory 实例
3、transactionManager 事务管理器:
在mybatis中事务管理器有两种
<transactionManager type="[JDBC|MANAGED]"/>
常用的是JDBC,因为这个配置直接使用了 JDBC 的提交和回滚功能,它依赖从数据源获得的连接来管理事务作用域。而MANAGED 这个配置几乎
没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。
注意:如果你使用的是Spring+mybatis,那么就不需要再去配置transactionManager事务管理器,因为在spring模块中会使用自带的管理
器会覆盖自己配置的!!
4、dataSource 数据源:这个元素使用标准的JDBC数据源接口来配置JDBC的连接对象的资源
有三种类型的数据源
<dataSource type="[unpooled|pooled|jndi]">
.....
</dataSource>
  • unpooled:当在被请求的时候会开启连接和关闭连接
  • pooled:利用一种连接池的概念,当被请求的时候会创建一个连接对象,当操作完成时候,连接对象会归还给池。这是并发WEB开发快速              响应请求常用方式
  • jndi:这个数据源的实现主要是为了能够在容器中使用,如在Spring或应用服务器这类容器中使用。而容器可以集中或者外部配置数据源,        jndi这种数据源有引用上下文的作用

注:还有一些其它的数据源,如c3p0、druid、dbcp......

mappers 映射器

1、mappers 是MyBtis核心组件之一,是用于定义(注册)映射SQL语句的文件为映射器。

2、在前面的元素基本配置好MyBatis的行为了,还差配置SQL映射语句,我们需要告诉MyBatis到哪里去找这些语句,在java中并没有一个自动寻找的方法,所以我们需要手动配置去让MyBatis找到SQL映射语句,这就要用到<mappers>标签元素了。

主要有三种方式:

  • 第一种:资源路径(用resource):相对类路径的资源引用,不要求文件名必须与XXXMapper接口一致、不要求与XXXMapper接口文件在同一目录下[com/dao/stuMapper.xml之间是/不是.]
<mappers>
<!--到具体的XXXMapper.xml文件 (必须是com/dao/StuMapper.xml而不是com.dao.StuMapper.xml)-->
<mapper resource="com/dao/StuMapper.xml"/>
</mappers>

第二种:直接使用XXXMapper接口名绑定(class),要求文件名(XXXMapper.xml)必须与XXXMapper接口一致、要求与XXXMapper接口文件在同一目录下!!![com.dao.stuMapper之间是.不是/]

<mappers>
<mapper class="com.dao.StuMapper"/>
</mappers>

第三种:绑定包名,该包下的XXXMapper接口对应的XXXMapper.xml都会被注册成映射器。要求文件名(XXXMapper.xml)必须与XXXMapper接口一致、要求与XXXMapper接口文件在同一目录下!!!

 <mappers>
<!--mappers标签与package标签一起使用-->
<package name="com.dao"/>
</mappers>

3、在MyBatis3前,使用基于xml文件配置SQL映射语句,在MyBatis 3之后,MyBatis支持了注解开发!!但是使用注解也有不方便的地方

附加:写一个模糊查询

1、在StuMapper接口中写业务方法

  //模糊查询
List<Stu> selectLike(String sname);

2、在StuMapper.xml中配置SQL语句

 <select id="selectLike" parameterType="String" resultType="com.pojo.Stu">
<!--sql语句:select * from stu where sname like "%小%"-->
select * from stu where sname like "%"#{sname}"%";
</select>

3、测试

 //模糊查询
@Test
public void test06(){
//得到数据连接对象
SqlSession sqlSession = MybatisUntil.getSqlSession();
//得到XXXMapper接口对象,然后就能调用接口中的方法(实现操作数据库)
StuMapper mapper = sqlSession.getMapper(StuMapper.class);
//调用StuMapper接口中的方法
List<Stu> stus = mapper.selectLike("小");
for (Stu stu:stus) {
System.out.println(stu);
}
//关闭资源
sqlSession.close();
}

4、结果截图

 

 



Mybatis笔记02-----MyBatis的核心配置文件以及模糊查询的实现的更多相关文章

  1. MyBatis(三):核心配置文件的重要配置

    本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出1便就懂!b站搜索狂神说即可 https://space.bilibili.com/95256449?spm_id_from=333.788 ...

  2. Mybatis笔记01-基本原理,配置文件,映射文件,以及调用过程

    Mybatis基本原理 应用程序找Mybatis要数据 mybatis从数据库中找来数据 2.1 通过mybatis-config.xml 定位哪个数据库 2.2 通过Category.xml执行对应 ...

  3. mybatis入门,CRUD,万能Map,模糊查询

    第一个Mybatis程序 核心配置文件mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?& ...

  4. MyBatis(三):核心配置文件的重要配置-Log

    本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出1便就懂!b站搜索狂神说即可 https://space.bilibili.com/95256449?spm_id_from=333.788 ...

  5. mybatis笔记02

    目录 0. 文章目录 1. Mybatis映射文件 1.1 输入映射 1.2 输出映射 1.3 resultMap 2. 动态SQL 2.1 if和where 2.2 foreach循环 2.3 sq ...

  6. Linux实战教学笔记02:计算机系统硬件核心知识

    标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 互联网企业常见服务器介绍 1.1 互联网公司服务器品牌 - DELL(大多数公司,常用) - HP - IBM(百度在用) 浪潮 联想 航天联 ...

  7. mybatis转义反斜杠_MyBatis Plus like模糊查询特殊字符_、\、%

    在MyBatis Plus中,使用like查询特殊字符_,\,%时会出现以下情况: 1.查询下划线_,sql语句会变为"%_%",会导致返回所有结果.在MySQL中下划线" ...

  8. Mybatis mysql 一个搜索框多个字段模糊查询 几种方法

    第一种 or 根据搜索框给定的关键词,模糊搜索用户名和账号都匹配的用户集合 <select id="list" parameterType="com.user.Us ...

  9. Bootstrap-table学习笔记(二)——前后端分页模糊查询

    在使用过程中,一边看文档一边做,遇到了一些困难的地方,在此记录一下,顺便做个总结: 1,前端分页 2,后端分页 3,模糊查询 前端分页相当简单,在我添加了2w条测试数据的时候打开的很流畅,没有卡顿. ...

随机推荐

  1. 服务器时间同步架构与实现chrony

    实验背景 模拟企业局域服务器时间同步,保障各服务器系统准确性和时间一致性. 时间服务器系统搭建 实验架构图 环境设备 设备IP规划 国内互联网NTP服务器 ntp.aliyun.com #阿里云NTP ...

  2. 「2020-2021 集训队作业」Yet Another Linear Algebra Problem(行列式,Binet-Cauchy 公式)

    题面 出题人:T L Y \tt TLY TLY 太阳神:Tiw_Air_OAO 「 2020 - 2021 集 训 队 作 业 」 Y e t A n o t h e r L i n e a r A ...

  3. [CF1536F] Omkar and Akmar(博弈论?组合数学)

    题面 [CF1536F] Omkar and Akmar 甲乙轮流在一个有 N N N 个位置的环上放字母(环上每个位置不同),每次可以放一个 A 或 B ,要求不能有相同的字母相邻,轮到某个人时不能 ...

  4. Go 语言入门 3-动态数组(slice)的特性及实现原理

    go 语言中的动态数组(slice),是基于数组实现的,可以相比数组而言更加的灵活.其他语言的 slice 通常仅是一个 API, 但是 go 语言的 slice 不仅仅是一种操作, 也是一种数据结构 ...

  5. 04_Linux基础-.&..-cat-tac-重定向-EOF-Shell-more-ps-less-head-tail-sed-grep-which-whereis-PATH-bash-usr-locate-find

    04_Linux基础-.&..-cat-tac->&>>-EOF-Shell-more-ps-less-head-tail-sed-grep-which-wherei ...

  6. JavaWeb核心篇(3)——JSP,MVC,三层架构

    JavaWeb核心篇(3)--JSP,MVC,三层架构 在本篇文章中我们会学习到JSP,MVC,三层架构 虽然JSP已经快被时代所淘汰,但是在一些老旧的工作场所还是有在使用,所以了解一下也不为过 至于 ...

  7. C# 脚本与Unity Visual Scripting 交互,第一步(使用C# 脚本触发Script Graph的事件)(Custom Scripting Event)

    写在前面 感谢Unity 川哥的帮助,解决了单独调用GameObject的需求 首先 需要在Unity 中创建一个自定义事件脚本(注释非常重要) using System.Collections; u ...

  8. Windows客户端DNS工作原理

    通常大家对Windows客户端DNS的配置存在多个误区. 误区一,配置1个内网DNS,1个外网DNS.解析内网的时候用内网DNS,解析外网的时候用外网. 电脑怎么知道哪个是内网?哪个是外网?我们内部的 ...

  9. service服务使用CoreDNS提供的域名地址访问

    普通的 Service:会生成 servicename.namespace.svc.cluster.local 的域名,会解析到 Service 对应的 ClusterIP 上,在 Pod 之间的调用 ...

  10. logstash中关于Jdbc输入配置选项详解

    Setting Input type Required clean_run boolean No columns_charset hash No connection_retry_attempts n ...