20200430——mybatis xml开发

mybatis概述

mybatis 是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。
mybatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过 java 对象和 statement 中sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对象并返回。
采用 ORM 思想解决了实体和数据库映射的问题,对 jdbc 进行了封装,屏蔽了 jdbc api 底层访问细节,使我们不用与 jdbc api 打交道,就可以完成对数据库的持久化操作。
为了我们能够更好掌握框架运行的内部过程,并且有更好的体验,下面我们将从自定义 Mybatis 框架开始来学习框架。此时我们将会体验框架从无到有的过程体验,也能够很好的综合前面阶段所学的基础。

JDBC

import java.sql.*;

/**
 * @Classname JdbcTest
 * @Description TODO
 * @Date 2020/4/30 8:15
 * @Created by mmz
 */
public class JdbcTest {
    public static void main(String[] args) throws SQLException {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8","root","password");
            String sql = "select * from account where name = ?";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1,"mmz");
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                System.out.println(resultSet.getString("id")+" "+resultSet.getString("name"));
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            resultSet.close();
            preparedStatement.close();
            connection.close();
        }
    }
}

在这里插入图片描述

JDBC存在的问题

1.数据库连接创建,释放频繁造成系统资源浪费从而影响性能,使用数据库连接池可以解决此问题。

2.sql语句中存在硬编码,sql变动的时候,需要修改代码。

3.在preparedStatement向占有符号传参数存在硬编码,因为sql条件where条件不一定,可能多也可能少。

4.对结果集解析存在硬编码(查询列名),如果能将结果映射成pojo代码比较方便。

ORM

object relationl mapping对象关系映射
简单的说,就是把数据库表和实体类及实体类的属性对应起来
让我们可以操作实体类就实现操作数据库表

mybatis入门

环境搭建

第一步:创建maven工程,导入坐标
第二步:创建实体类和dao接口
第三步:创建mybatis的主配置文件
第四步:创建映射配置文件UserDao.xml

环境搭建的注意事项

第一个:创建Userdao.xml和Userdao.java是名称是为了和我们之前的知识保持一致。在mybatis中它把持久层的操作接口名称和映射文件叫做mapper
所以UserDao 和UserMapper是一样的

第二个:在idea创建目录/包是不一样

第三个:mybatis的映射配置文件位置必须和dao接口的包结构相同

第四个:映射配置文件的mapper标签,namespace的取值必须是dao接口的全限定类名

第五个:映射配置文件的操作配置,必须是dao接口的方法名

如果我们遵从了以上点之后,我们在开发中无须再写dao的实现类。

在这里插入图片描述

mybatis涉及到的设计模式

在这里插入图片描述
读取配置文件只有两招:第一个使用类加载器,读取类路径的配置文件。第二个使用ServletContext对象的getRealPath()

创建工厂,mybatis使用了构建者模式,builder是构建者,把对象创建的细节隐藏。

生产sqlsession,使用了工厂模式,降低类之间的依赖关系,使我们不用重新编译部署。

代理模式,创建一个Dao一个接口的实现类。不修改源码的基础上,对已有方法进行增强。

mybatis入门案例

第一步:读取配置文件
第二步:创建SqlSessionFactory工厂
第三步:创建SqlSession
第四步:创建Dao接口的代理对象
第五步:执行dao中的方法
第六步:释放资源

注意事项:不要忘记,在映射配置中告知mybatis要封装到哪个配置类
配置的方式,是全限定类名。

代码地址
mybatis入门开发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值