1、Mybatis框架 - 基础入门

1、框架概述

1.1 什么是框架?

  模板,项目的半成品

  SSH:Spring Struts2 Hibernate
  SSM:Spring SpringMVC Mybatis

MyBatis是⼀个优秀的基于 Java 的持久层框架,它内部封装了 JDBC,
使开发者只需要关注 SQL本身,⽽不需要花费精⼒去处理例如注册
驱动、创建连接、创建statement、⼿动设置参数、结果集检索等繁杂的过程。

  JdbcTemplate 和 DBUtils 不能称之为框架,只能说是工具

1.2 作用

  ORM:Object Relational Mapping 对象关系映射
       实体类和表之间的对应关系
       Hibernate  4级 完全映射,不需要写SQL
       MyBatis    2级 不完全映射,需要写SQL,对象封装自动
       
框架⼀般处在低层应⽤平台(如 J2EE)和⾼层业务逻辑之间的中间层。

⾼内聚、低耦合

1.3 JDBC问题分析

  1. 数据库链接创建、释放频繁造成系统资源浪费从⽽影响系统性能,如果使⽤数据库链接池可解决此问题。

  2. Sql 语句在代码中硬编码,造成代码不易维护,实际应⽤ sql 变化的可能较⼤,sql 变动需要改变 java 代码。

  3. 使⽤ preparedStatement 向占有位符号传参数存在硬编码,因为 sql 语句的 where 条件不⼀定,可能多也可能少,修改 sql 还要修改代码,系统不易维护。

  4. 对结果集解析存在硬编码(查询列名),sql 变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成 pojo 对象解析⽐较⽅便。

     maven - 聚合工程
     	maven-父工程,引入的依赖,都会被子工程自动继承
     		    子模块 module
    

2.mybatis快速入门

2.1 (配置文件)实现步骤

1.导入依赖 坐标
2.准备工作:表、实体类、dao接口
3.mybatis配置文件 - 配置数据库的连接信息,指定映射文件
4.mybatis的映射文件(写SQL的地方)
	和dao接口在相同的位置,相同的名字
	sql语句标签的id 和方法名一致
	namespace 必须是接口的全限定类名
5.测试

1、添加MyBatis 3.5.2 的坐标

<dependencies>
 <!-- junit依赖 -->
 <dependency>
 <groupId>junit</groupId>
 <artifactId>junit</artifactId>
 <version>4.12</version>
 <scope>test</scope>
 </dependency>
 <!-- mybatis依赖 -->
 <dependency>
 <groupId>org.mybatis</groupId>
 <artifactId>mybatis</artifactId>
 <version>3.5.2</version>
 </dependency>
 <!-- 数据库依赖 -->
 <dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <version>8.0.16</version>
 <scope>runtime</scope>
 </dependency>
 <!-- log4j⽇志依赖 -->
 <dependency>
 <groupId>log4j</groupId>
 <artifactId>log4j</artifactId>
 <version>1.2.17</version>
 </dependency>
 </dependencies>

2、编写User实体类

public class User implements Serializable {
 private Integer id;
 private String username;
 private Date birthday;
 private String sex;
 private String address;

编写持久层接⼝IUserDao

public interface IUserDao {
 /**
 * 查询所有⽤户
 * @return
 */
 List<User> findAll();
}

编写持久层接⼝的映射⽂件IUserDao.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="com.zzxx.dao.IUserDao">
 <!-- 配置查询所有操作 -->
 <select id="findAll" resultType="com.zzxx.domain.User">
 select * from user
 </select>
</mapper>

编写SqlMapConfig.xml配置⽂件

<?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>
<!-- 配置 mybatis 的环境 -->
 <environments default="mysql">
 <!-- 配置 mysql 的环境 -->
 <environment id="mysql">
 <!-- 配置事务的类型 -->
 <transactionManager type="JDBC"></transactionManager>
 <!-- 配置连接数据库的信息:⽤的是数据源(连接池) -->
 <dataSource type="POOLED">
 <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
 <property name="url" value="jdbc:mysql:///mybatis"/>
 <property name="username" value="root"/>
 <property name="password" value="root"/>
 </dataSource>
 </environment>
 </environments>
 <!-- 告知 mybatis 映射配置的位置 -->
 <mappers>
 <mapper resource="com/zzxx/dao/IUserDao.xml"/>
 </mappers>
</configuration>

编写测试类

public class MybatisTest {
 public static void main(String[] args) throws Exception {
 // 1.读取配置⽂件
 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
 // 2.创建 SqlSessionFactory 的构建者对象
 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
 // 3.使⽤构建者创建⼯⼚对象 SqlSessionFactory
 SqlSessionFactory factory = builder.build(in);
 // 4.使⽤ SqlSessionFactory ⽣产 SqlSession 对象
 SqlSession session = factory.openSession();
 // 5.使⽤ SqlSession 创建 dao 接⼝的代理对象
 IUserDao userDao = session.getMapper(IUserDao.class);
 // 6.使⽤代理对象执⾏查询所有⽅法
 List<User> users = userDao.findAll();
 for (User user : users) {
 System.out.println(user);
 }
 // 7.释放资源
 session.close();
 in.close();
 }
}

2.2 补充(基于注解的 mybatis 使⽤)

2.2.1 在持久层接⼝中添加注解

public interface IUserDao {
 /**
 * 查询所有⽤户
 * @return
 */
 @Select("select * from user")
 List<User> findAll();
}

2.2.2 修改 SqlMapConfig.xml

<!-- 告知 mybatis 映射配置的位置 -->
<mappers>
 <mapper class="com.zzxx.dao.IUserDao"/>
</mappers>

注意:在使⽤基于注解的 Mybatis 配置时,请移除 xml 的映射配置(IUserDao.xml)。

3.自定义Mybatis 类

来构建⼀个属于⾃⼰的持久层框架,将会涉及到的⼀些知识
点:⼯⼚模式(Factory ⼯⼚模式)、构造者模式(Builder 模式)、代理模式,反射,⾃定义注解,
注解的反射,xml 解析,数据库元数据,元数据的反射等。
分析流程
在这里插入图片描述

Resources:类
SqlSessionFactoryBuilder:类
SqlSessionFactory:接口
SqlSession:接口

Date Calendar

JDK8:LocalDate LocalTime LocalDateTime
数据库:date time datetime
	   Date Time Timestrap
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值