Mybatis笔记02-----MyBatis的核心配置文件以及模糊查询的实现
认识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 使用安全连接-->
<!--& 转义 &-->
<!--useUnicode=true 防止编码错误-->
<!--characterEncoding=UTF-8 防止中文乱码-->
<property name="url" value="jdbc:mysql://localhost:3306/demo?useSSL=true&useUnicode=true&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&useUnicode=true&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 使用安全连接-->
<!--& 转义 &-->
<!--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的核心配置文件以及模糊查询的实现的更多相关文章
- MyBatis(三):核心配置文件的重要配置
本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出1便就懂!b站搜索狂神说即可 https://space.bilibili.com/95256449?spm_id_from=333.788 ...
- Mybatis笔记01-基本原理,配置文件,映射文件,以及调用过程
Mybatis基本原理 应用程序找Mybatis要数据 mybatis从数据库中找来数据 2.1 通过mybatis-config.xml 定位哪个数据库 2.2 通过Category.xml执行对应 ...
- mybatis入门,CRUD,万能Map,模糊查询
第一个Mybatis程序 核心配置文件mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?& ...
- MyBatis(三):核心配置文件的重要配置-Log
本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出1便就懂!b站搜索狂神说即可 https://space.bilibili.com/95256449?spm_id_from=333.788 ...
- mybatis笔记02
目录 0. 文章目录 1. Mybatis映射文件 1.1 输入映射 1.2 输出映射 1.3 resultMap 2. 动态SQL 2.1 if和where 2.2 foreach循环 2.3 sq ...
- Linux实战教学笔记02:计算机系统硬件核心知识
标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 互联网企业常见服务器介绍 1.1 互联网公司服务器品牌 - DELL(大多数公司,常用) - HP - IBM(百度在用) 浪潮 联想 航天联 ...
- mybatis转义反斜杠_MyBatis Plus like模糊查询特殊字符_、\、%
在MyBatis Plus中,使用like查询特殊字符_,\,%时会出现以下情况: 1.查询下划线_,sql语句会变为"%_%",会导致返回所有结果.在MySQL中下划线" ...
- Mybatis mysql 一个搜索框多个字段模糊查询 几种方法
第一种 or 根据搜索框给定的关键词,模糊搜索用户名和账号都匹配的用户集合 <select id="list" parameterType="com.user.Us ...
- Bootstrap-table学习笔记(二)——前后端分页模糊查询
在使用过程中,一边看文档一边做,遇到了一些困难的地方,在此记录一下,顺便做个总结: 1,前端分页 2,后端分页 3,模糊查询 前端分页相当简单,在我添加了2w条测试数据的时候打开的很流畅,没有卡顿. ...
随机推荐
- ASP.NET CORE在docker中的健康检查(healthcheck)
在使用docker-compose的过程中,很多程序都提供了健康检查(healthcheck)的方法,通过健康检查,应用程序能够在确保其依赖的程序都已经启动的前提下启动,减少各种错误的发生,同时,合理 ...
- 刷题记录:Codeforces Round #731 (Div. 3)
Codeforces Round #731 (Div. 3) 20210803.网址:https://codeforces.com/contest/1547. 感觉这次犯的低级错误有亿点多-- A 一 ...
- [CF1525D] Armchairs (DP / 模拟费用流)
题面简述 一条线上等距地分布着 n n n 老鼠和 m m m 洞( m ≥ n m\geq n m≥n),这连续 n + m n+m n+m 个位置上要么是老鼠要么是洞,一个老鼠进一个洞,代价是所有 ...
- C# winfrom ListView控件实现自由设置每一行字体及背景色等
背景:公司经常会需要将日志信息,输出到一个对话框中显示出来.之前一直采用的listbox控件,操作简单,使用方便,但是遗憾的是,不能自由控制每一行的状态. 于是想了如下几个方案: (1)重绘listb ...
- VS 正则匹配快速查询
**************************************************************************************************** ...
- CURL 用法记录
CURL 用法记录 在工作中经常需要用到curl 命令,记录一下常用的场景 Send a POST Request with JSON Data curl -d '{"login" ...
- HDFS 分布式环境搭建
HDFS 分布式环境搭建 作者:Grey 原文地址: 博客园:HDFS 分布式环境搭建 CSDN:HDFS 分布式环境搭建 准备四个Linux实例 每个实例对应的 host 和 ip 地址如下 nod ...
- 使用 Elastic 技术栈构建 K8S 全栈监控 -3: 使用 Filebeat 采集 Kubernetes 集群日志
文章转载自:https://www.qikqiak.com/post/k8s-monitor-use-elastic-stack-3/ 操作步骤 filebeat连接es使用上一步创建的secret: ...
- YAML资源清单
YAML 文件基本语法格式 在 Docker 环境下面我们是直接通过命令 docker run 来运行我们的应用的,在 Kubernetes 环境下面我们同样也可以用类似 kubectl run 这样 ...
- 监控Redis集群,有两种方法
前提条件 redis集群:已搭建三主三从(三台主机) prometheus.grafana已安装 三台主机ip: 192.168.0.39,192.168.0.164,192.168.0.68 第一种 ...