解决dao层问题解决方案, 之前dao使用的技术: JDBC
jdbc使用步骤:
加载驱动类
创建Connection对象
编写sql语句
创建PreparedStatement对象
如果sql有?占位, 给?赋值
执行sql
如果查询, 解析ResultSet
关闭资源
问题:
-
Sql语句硬编码在代码中, 如果修改sql, 重新编译
-
JDBC步骤固定, 如果执行多次sql, 重写编写相同的代码,
-
数据源参数硬编码
MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码
Mybatis入门程序
-
添加依赖: mybatis, 数据库驱动(mysql), junit测试
Mysql驱动:
-
5版本: 驱动类: com.mysql.jdbc.Driver
-
8版本: 驱动类: com.mysql.cj.jdbc.Driver, 指定时区
mysql安装 5.7 开源免费的版本
Oracle收购mysql: 从8开始, 有oracle相关的功能, 社区版(免费的), 专业版(收费)
-
1.<!--添加依赖-->
<dependencies>
<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.47</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
2.在项目下创建Mybatis全局配置文件: mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> </configuration>
3.在该配置文件创建一个数据源:
<!--开发环境--> <environments default="mysql"> <environment id="mysql"> <!--事务管理器: JDBC: 使用jdbc管理事务, 需要手动提交事务--> <transactionManager type="JDBC"/> <!--dataSource数据源的类型: POOLED 连接池 UNPOOLED: 不带连接池 --> <dataSource type="POOLED"> <!--数据库四大参数--> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test"/> <property name="username" value="root"/> <property name="password" value="123"/> </dataSource> </environment> </environments>
4.创建表对应的实体类
使用lombok插件: 自动生成get/set 构造方法, toString hashCode …