提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
一、Mybatis概述
1、概念
2、持久层
3、JavaEE三层架构:
4、框架
二、JDBC 缺点
编辑
1、硬编码
2、SQL语句
3、操作繁琐
三、使用步骤
1.创建表
2.创建模块,导入坐标
在创建好的模块中的 pom.xml 配置文件中添加依赖的坐标
3、添加配置文件
1)将logback.xml、mybatis-config.xml配置到项目的 resources 目录下
2)需要在项目的 resources 目录下创建(文件夹:com/ucloud/sims/mapper),并添加
UserMapper.xml配置
3)在 com.ucloud.pojo 包下创建 User类
4)在 com.ucloud.test 包下编写 MybatisDemo 测试类
MyBatis 是一款优秀的==持久层框架==,用于简化 JDBC 开发
MyBatis 本是 Apache 的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。
2013年11月迁移到 Github 官网:https://mybatis.org/mybatis-3/zh/index.html
负责将数据到保存到数据库的那一层代码。 以后开发我们会将操作数据库的Java代码作为持久层。而Mybatis就是对jdbc代码进 行了封装。
表现层、业务层、持久层
框架就是一个半成品软件,是一套可重用的、通用的、软件基础代码模型
在框架的基础之上构建软件编写更加高效、规范、通用、可扩展
注册驱动、获取连接
上图标1的代码有很多字符串,而这些是连接数据库的四个基本信息,以后如果要将 Mysql数据库换成其他的关系型数据库的话,这四个地方都需要修改,如果放在此处就意 味着要修改我们的源代码。
上图SQL语句就要进行更改。这也不方便后期的维护
手动设置参数 手动封装结果集
上图标4的代码是对查询到的数据进行封装,而这部分代码是没有什么技术含量,而且特别耗费时间的。
代码如下(示例):
create table tb_user(
id int primary key auto_increment,
username varchar(20),
password varchar(20),
gender char(1),
addr varchar(30)
);
INSERT INTO tb_user VALUES (1, 'zhangsan', '123', '男', '北京');
INSERT INTO tb_user VALUES (2, '李四', '234', '女', '天津');
INSERT INTO tb_user VALUES (3, '王五', '11', '男', '西安');
代码如下(示例):
org.mybatis
mybatis
3.5.5
mysql
mysql-connector-java
5.1.46
junit
junit
4.13
test
org.slf4j
slf4j-api
1.7.20
ch.qos.logback
logback-classic
1.2.3
ch.qos.logback
logback-core
1.2.3
private String Id;
private String name;
private int student_number;
private String president;
要生成setter和getter方法,生成to_string方法
public static void main(String[] args) throws IOException {
//1. 加载mybatis的核心配置文件,获取 SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
//2. 获取SqlSession对象,用它来执行sql
SqlSession sqlSession = sqlSessionFactory.openSession();
//3. 执行sql
List users = sqlSession.selectList("test.selectAll");
//参数是一个字符串,该字符串必须是映射配置文件的namespace.id
System.out.println(users);
//4. 释放资源
sqlSession.close();
}