前言
在之前操作数据库时,都会用到jdbc,但是像这样写代码,都会有些麻烦,因为要写的代码很多,层次也多
mybatis的出现,让我们程序员只需要写sql代码即可操作数据库,让我们的开发效率变得更高效,那现在来一起开启mybatis的学习之旅吧~ (๑•̀ㅂ•́)و✧
1. mybatis介绍
mybatis是一个orm框架,现在分别介绍一下
1.1. 框架
框架简单来说,就是一个半成品软件,在实际的开发中,对于那些简单可复用的代码,可以提取出成一个框架,直接使用这个框架就可以了
框架的好处:
- 节约时间
- 可以让程序员更专注于业务层,而非只专注于技术层
1.2. orm框架
orm(object relationl mapping),对象关系映射
也就是用于 数据库 和 类对象 之间的映射
orm框架就是用来代替之前的jdbc操作的,这样就大大的提高了开发效率
1.3. mybatis

mybatis是一个半自动化的orm框架,mybatis是对jdbc的一个封装,使用它,就不用再写jdbc代码了,直接操作sql语句即可
提到了半自动话,当然还有全自动话
全自动化orm框架 --- hibernate
因为它的学习成本高和不灵活导致现在很少有企业使用
2. mybatis 入门
2.1. 环境搭建
这里先按步骤搭建一下环境
2.1.1. 新建空项目

2.1.2. 创建maven工程


2.1.3. 在pom.xml中的<dependencies>标签中引入依赖

<dependencies>
<!-- mybatis -->
<dependency>
<groupid>org.mybatis</groupid>
<artifactid>mybatis</artifactid>
<version>3.5.7</version>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupid>mysql</groupid>
<artifactid>mysql-connector-java</artifactid>
<version>8.0.26</version>
</dependency>
<!-- junit -->
<dependency>
<groupid>junit</groupid>
<artifactid>junit</artifactid>
<version>4.10</version>
</dependency>
<!-- log4j -->
<dependency>
<groupid>log4j</groupid>
<artifactid>log4j</artifactid>
<version>1.2.12</version>
</dependency>
</dependencies>2.1.4. 创建mybatis核心配置文件sqlmapconfig.xml
这个核心配置文件是放在resources资源包下的

再将以下内容复制到核心配置文件中
<?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="mysql">
<environment id="mysql">
<!-- 事务类型 -->
<transactionmanager type="jdbc"></transactionmanager>
<!-- 数据源 -->
<datasource type="pooled">
<property name="driver" value="com.mysql.jdbc.driver"/>
<property name="url" value="jdbc:mysql:///mybatis"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</datasource>
</environment>
</environments>
</configuration>2.1.5. 在resource下创建log4j.properties,让控制台打印sql语句

将以下内容复制进去
# set root category priority to info and its only appender to console.
#log4j.rootcategory=info, console debug info warn error fatal
log4j.rootcategory=debug, console
# set the enterprise logger category to fatal and its only appender to console.
#log4j.logger.org.apache.axis.enterprise=fatal, console
# console is set to be a consoleappender using a patternlayout.
log4j.appender.console=org.apache.log4j.consoleappender
log4j.appender.console.layout=org.apache.log4j.patternlayout
log4j.appender.console.layout.conversionpattern=[%d{mm/dd hh:mm:ss}] %-6r [%15.15t] %-5p %30.30c %x - %m\n
2.1.6. 根据数据库表创建实体类
这里提供一个数据库表,大家可以自己直接复制过去用,或者是用自己的
create table user (
id int auto_increment primary key,
username varchar(255),
sex varchar(255),
address varchar(255)
) character set utf8mb4 collate utf8mb4_unicode_ci;
2.2. 创建持久层接口和映射文件
2.2.1. 在java目录创建持久层接口

结构还是要有的,在mapper包下创建
public interface usermapper {
list<user> findall();
}2.2.2. 在resource目录创建映射文件

<?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">
<!--namespace 要和对应的 mapper 接口的全限定名一致-->
<mapper namespace="com.yibeigen.mapper.usermapper">
<!-- select 查询 -->
<!--resulttype 是返回值类型 -->
<!--id 是方法名 -->
<select id="findall" resulttype="user">
select * from user
</select>
</mapper>2.2.3. 将映射文件配置到mybatis核心配置文件sqlmapconfig.xml中
<!-- 注册映射文件 --> <mappers> <mapper resource="com/yibeigen/mapper/usermapper.xml"></mapper> </mappers>
2.2.4. 编写映射文件的注意事项
- 映射文件要和接口名称相同
- 映射文件要和接口的目录结构相同

- 映射文件中的属性
namespace属性写接口全名
id属性是接口的方法名
resulttype属性是接口的返回值
parametertype属性是接口方法的参数类型
resulttype、parametertype属性要写全类名
如果是集合类型,就写泛型的全类名
2.2.5. 测试持久层接口方法
和maven的操作一样,在test包下创建测试方法

@test
public void testfindall() throws exception {
// (1)读取核心配置文件
inputstream is = resources.getresourceasstream("sqlmapconfig.xml");
// (2)创建sqlsessionfactorybuilder对象
sqlsessionfactorybuilder builder = new sqlsessionfactorybuilder();
// (3)sqlsessionfactorybuilder对象获取sqlsessionfactory对象
sqlsessionfactory factory = builder.build(is);
// (4)sqlsessionfactory对象获取sqlsession对象
sqlsession session = factory.opensession();
// (5)sqlsession对象获取代理对象
usermapper usermapper = session.getmapper(usermapper.class);
// (6)代理对象执行方法
list<user> all = usermapper.findall();
all.foreach(system.out::println);
// (7)释放资源
session.close();
is.close();
}
因为我输出是直接输出对象,那么这个输出和你重写的tostring方法有关
这里就先让大家感受一下这个mybatis大致是如何操作的(๑•̀ㅂ•́)و✧
3. 总结

总结
到此这篇关于mybatis基础概念与框架原理的文章就介绍到这了,更多相关mybatis概念与框架原理内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论