数据->MyBatis->数据库
相当于是中间桥梁,简化JDBC开发
JDBC缺点
1.硬编码(路径,注册驱动,获取连接,可维护性较差)
2.操作繁琐(手动设置参数、手动封装结果集)
MyBatis简化
1.配置文件抽取保存硬编码
2.简化JDBC代码,一行代码搞定
Mapper代理开发(主流方式)
高级特性:动态SQL
Mybatis入门案例
要求如下:
实现步骤
1 创建tb_user表
create database mybatis; use mybatis; drop table if exists tb_user; 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,'LISI','123','男','北京'); INSERT INTO tb_user VALUES (3,'WANGWU','123','男','成都');
2 创建模块,导入坐标
需要导入的模块有:
mybatis
mysql-connector
junit
logback
依赖项如下
<dependencies> <!--mybatis依赖--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.49</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- 添加slf4j日志api --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.20</version> </dependency> <!-- 添加logback-classic依赖 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <!-- 添加logback-core依赖 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.3</version> </dependency> </dependencies>
3 编写配置文件
mybatis-config.xml(记录数据库连接硬编码信息)
<dependencies> <!--mybatis依赖--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.49</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- 添加slf4j日志api --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.20</version> </dependency> <!-- 添加logback-classic依赖 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <!-- 添加logback-core依赖 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.3</version> </dependency> </dependencies>
4 编写SQL映射语句(解决硬编码问题)
UserMapper.xml(记录查询)
<?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"> <mapper namespace="test"> <select id="selectAll" resultType="com.itheima.pojo.User"> select * from tb_user; </select> </mapper>
返回结果User类定义如下:
public class User { private Integer id; private String username; private String password; private String gender; private String addr; }
5 代码编写
1 定义POJO类(即上面的User类)
2 加载核心配置文件,获得SqlSessionFactory对象
//1. 加载mybatis的核心配置文件,获取 SqlSessionFactory String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
3 获取SqlSession对象,执行SQL语句
//2.获取SqlSession对象 SqlSession sqlSession = sqlSessionFactory.openSession(); //3.执行sql List<User> users = sqlSession.selectList("test.selectAll"); System.out.println(users);
4 释放资源
//4. 释放资源 sqlSession.close();
结果
按照如此一通下来,运行demo类中的main方法,即可完成对tb_user表中数据的查询,并在控制台中返回,同时可以通过配置logback.xml配置文件,对日志文件的输出进行设置。
Mapper代理开发