什么是Mybatis
Mybatis是一款优秀的持久层框架,帮助程序员将数据存入到数据库
一、功能和优点:
1、Mybatis支持定制化SQL、存储过程以及高级映射;
2、Mybatis几乎避免了所有的JDBC代码和手动设置参数(setInt...)以及获取结果集(ResultSet);
3、Mybatis可以使用简单的xml或者注解来配置和映射原生类型、接口和Java的POJO(实体类)为数据库中的记录
二、历史
Mybatis本来是apache的一个开源项目,名字叫ibatis,2010年这个项目由apache software foundation 迁移到了Google code,并且改名为Mybatis
2013年11月迁移到了GitHub
持久化
为什么要把数据进行持久化?
因为我们的内存特点就是断点即失,但是我们某些数据不想让他丢失掉,所以就得需要进行数据的持久化
什么是持久层?
完成数据持久化的代码块,操作数据库,对数据库进行增删改查
拓展:
Dao层:编写对数据库增删改查语句
Servie层:调用Dao层,操作相关的业务
Controller层:接收前端的请求,将请求转发给Servie层,调用Servie层来实现业务
导入方式
去Maven远程仓库找依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.11</version>
</dependency>
XML配置
Mybatis-config.xml核心配置文件
环境配置
enviroments标签是设置环境配置的作用
Mybatis可以配置适应多种不同的环境,但是每一个SqlSessionFactory只能选择一种环境
我们可以配置多套环境,将来开发和测试链接不同的数据
<!-- 环境配置-->
<environments default="development">
<!-- 开发环境-->
<environment id="development">
<!-- transactionManager:事务管理器-->
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!-- 在mybatis配置文件中的&符号要先进行转义,用&-->
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&characterEncoding=utf8&useUnicode=true"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
<!-- 测试环境-->
<environment id="test">
<!-- transactionManager:事务管理器-->
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!-- 在mybatis配置文件中的&符号要先进行转义,用&-->
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&characterEncoding=utf8&useUnicode=true"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
属性properties优化
我们可以通过properties属性来实现引用配置文件
可以编写一个配置文件,在核心配置文件中进行引入
1、编写数据库配置文件
2、在核心配置文件中引入
注意:核心配置文件中的每一个标签都有他们约定好的顺序,如果我把properties标签放到别的地方,报错如下:
核心配置文件引入:
测试是否引入成功:
执行查询语句,成功将表数据查询出来了
拓展:
1、我们可以自己写一个db.properties配置文件来写数据库配置,也可以直接在properties标签下写
2、如果两个地方都写了相同的内容,外部的配置文件优先级较高!
类型别名优化
一、什么是类型别名
类型别名是为Java类型设置一个短的名字
意义:仅用来减少类完全限定名的冗余
二、优化方法
1、方法1:直接在核心配置文件中用typeAliases标签给对应的实体类起别名
(1)核心配置文件
(2)优化SQL的xml文件
2、方法2:也可以指定一个包,这里我指定的是我的实体类存放的包。Mybatis会在这个包名下面搜索需要的Java Bean,如果扫描到了有这个实体类,那么他的别名默认为这个类的类名,不过是首字母要小写!!!
(1)核心配置文件
(2)优化SQL的xml文件
两种方法的区别:
如果实体类比较少,使用第一种方式,因为可以自己修改别名;
如果实体类比较多,使用第二种,别名把实体类的类名首字母变成小写
3、方法3:可以在实体类上直接加注解@Alias
SQL的xml文件也要做修改
设置setting
是Mybatis中极为重要的调整设置,它会改变Mybatis的运行时行为
按照约定好的标签顺序,在核心配置文件中加setting标签
常见的设置:
映射器Mapper
我们每写一个SQL配置文件都要在mybatis-config.xml核心配置文件中进行注册
一、方式一:通过resource,把xml文件的全限定名加上即可
二、方式二:通过SQL的xml配置文件绑定的class接口进行注册
使用第二种方法的注意点:
1、接口和他的Mapper配置文件必须同名!
2、接口和他的Mapper配置文件必须在同一个包下!
为什么这样可以实现呢?
因为我们在写SQL配置文件的时候,就已经将配置文件和接口类进行了绑定
三、使用包名进行扫描注册绑定
至此,同学们对Mybatis的学习已经入门,后续的文章会更加深入的讲解MyBatis的使用,欢迎交流和指正!