Mybatis入门

本文介绍了Mybatis框架的基础知识,包括其作为持久层框架的角色,三层架构中的位置,以及如何简化JDBC操作。详细讲解了Mybatis的环境搭建、入门案例,强调了配置文件的设置要点,并对比了使用XML和注解的方式。最后提到了代码分析中的路径问题和解决办法。
摘要由CSDN通过智能技术生成

Mybatis框架

Mybatis框架
我学习的第一个框架 本文内容

  • mybatis入门
  • mybatisd 的概述
  • mybatis环境搭建
  • mybatis入门案例

mybatis入门

框架就是说一个半成品的软件,是一套解决方案,不同的框架解决不同的问题,Mybatis解决的是持久层的内容,它封装了很多细节,开发者比较容易就可以实现功能,提高开发效率 框架并不能实现业务层,他帮我们解决了底层代码问题,使我们把注意力集中于业务上

三层架构

表现层
展现数据
业务层
处理业务需求
持久层
是和数据库交互的
DAO:数据访问层
Spring 表现层框架

持久层框架

JDBC 技术是一种规范
spring jdbctemplate 和Apache 的dbutil都只是工具类
不能算是框架。
Mybatis 内部封装了JDBc 只要关注SQL就行 不需要花费精力去处理JDBC 驱动 链接等
通过xml或注解的方式链接起来
通过java对象和statement中sql映射生成sql数据 mybatis 执行sql并将结果映射为java对象并返回
ORM思想解决了实体和数据化映射的关系
Mybatis概述
持久层框架 java写的 封装了jdbc的细节,关注sql就行哈 无需关注注册驱动,创建链接等
什么是ORM呢
Object relational Mapping
数据库和实体类对应起来让我们操作实体类就能操作数据库
user User
id userid
user_name UserNAme
实体类中的属性和数据库表的字段保持一致
user User
id id
user_name user_name
Mybatis入门案列与环境搭建
一:创建maven工程并导入坐标
二 创建实体类和dao的接口
三 创建Mybatis的主配置文件
SqlMapConifg.xml
四 创建映射配置文件
IUserDao.xml
环境搭建的注意事项:
第一个:创建IUserDao.xml 和IUserDao,java时为了和之前的知识保持一致
在Mybatis中把持久层
IUserDao就是IUserMapper是一样的
第二 在idea 中创建目录 是和包不一样的 com.itheima.dao是三级结构

第三个: mybatis 的映射配置文件位置必须和dao接口的包结构相同
第四个:映射配置文件的mapper标签namespace 必须是dao接口的全限定类名
第五个:映射配置文件的操作配置 id属性取值必须是dao接口的方法名
遵从了三四五点后 开发后就无需再写dao的实现类
写完接口 我们的任务就实现了
mybatis入门案例
一 读取配置文件
二创建SqlSessionFactory工厂
三 创建SqlSession
四 创建Dao接口的代理对象
五 执行dao方法
六 适房资源
注意事项 不要忘记在映射配置中告诉mybatis要封装到哪个实体类
配置的方式 指定实体类的全限定类名

使用注解与使用配置文件是一样的。比xml方法简化一些
mybatis基于注解的入门案例
把IUserDao.xml 移除,在dao接口中使用@select注解 并且指定sql语句
同时需要在sqlmapconfig.xml中配置mapper配置时候 使用class属性指定dao接口的全限定类
明确:
是集开发越简便越好
所以是不使用dao实现类的方式

代码分析

 public static void main(String[] args)throws Exception {
        //1.读取配置文件
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();//创建工厂mybatis使用了构建者模式,它负责创建工厂 这里 in 就是 钱 builder是建造者 细节不用关心 直接用就可以  把繁琐的细节处理好
        SqlSessionFactory factory = builder.build(in);//工厂模式,生产SqlSession 好处是 流水线生产的时候 比如new1 实现 如果以后想改的话就要改源码,不用new,用工厂来生产session 解耦 降低依赖 不需用改源码
        //构建者模式  把对象创建细节隐藏  使用者直接调用方法
        、、创建dao接口 实现代理模式  优势 不修改源码的基础上对已有的方法增强。
        //3.使用工厂生产SqlSession对象
        SqlSession session = factory.openSession();//它有很多种重载,可以灵活性封装
        //4.使用SqlSession创建Dao接口的代理对象
        IUserDao userDao = session.getMapper(IUserDao.class);
        //5.使用代理对象执行方法
        List<User> users = userDao.findAll();
        for(User user : users){
            System.out.println(user);
        }
        //6.释放资源
        session.close();
        in.close();
    }

绝对路径和相对路径读取的时候都会有问题 绝对路径 d相对路径都有问题

因此实际开发如下:
1.使用 类加载器 她只能读取类路径的配置文件
2 使用ServeletContext对象的getrealPath()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值