mybatis的文章

Day01
  1. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IKrbT8o9-1599569430114)(C:\Users\wjq54\AppData\Roaming\Typora\typora-user-images\image-20200903190033805.png)]

2.到底什么是框架?

他是软件开发中一套解决方案,不同的框架解决不同的问题,使用框架的好处:框架封装了很多细节,使开发者极简单实现功能,大大开发效率

2.三层架构

表现层:展示数据

业务层:处理业务需求

持久层:和数据库交互

3.持久层解决方案

JDBC技术:Connection PreparedStatement ResultSet

Spring的JDBCTemPlate和DBUtils对JDBC的简单封装 ,都是工具类。

4.mybatis的概述

mybatis是一个持久层框架,封装JDBC的细节,只需关注sql语句,它使用了ORM思想实现了结果集的封装。

ORM:

Object Relational Mapping 对象关系映射。简单地说就是把数据表和实体类的属性对应封装起来,让我们操作实体类就可以实现操作数据库类。

5,mybatis的入门

1。环境搭建

官网:https://mybatis.org/mybatis-3/zh/index.html

第一步创建 meaven工程并导入坐标

第二部:创建实体类和dao接口

第三部:创建Mybatis的主配置文件 SqlMapConfig.xml文件

第四部:创建映射配置文件 IUserDao.xml文件

环境搭建的注意事项:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HcX7Raqg-1599569430133)(C:\Users\wjq54\AppData\Roaming\Typora\typora-user-images\image-20200904171847617.png)]

public class MybatisTest {

    public static void main (String[] args) throws Exception{
/*
入门案例
 */
         //1.读取配置文件 相对路径和绝对路径不会使用
         //第一个:使用类加载器,他只能读取类路径的配置文件
         //第二个:使用ServletContext对象的getRealPath()
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");


        //2.创建sqlsessionFactory工厂
        //mybatis使用了构造者模式  
        SqlSessionFactoryBuilder builder =new SqlSessionFactoryBuilder();
        SqlSessionFactory factory =builder.build(in);


        //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();
    }
}

自定义Mybatis的分析

mybatis在使用代理dao的方式实现增删改查做什么事?

第一创建代理对象

第二在代理对象使用selectlist。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-86j4Em3k-1599569430165)(E:\IDEA-spring框架-笔记-资料\01-第一天\截图\查询所有的分析.png)]

自定义mybatis能通过入门案例看到的类

Day02

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o0VvNOqL-1599569430201)(E:\IDEA-spring框架-笔记-资料\02-第二天\截图\自定义mybatis开发流程图.png)]

pom.xml

    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.18</version>

        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
        </dependency>
    </dependencies>


<?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>
    <!-- 配置properties
        可以在标签内部配置连接数据库的信息。也可以通过属性引用外部配置文件信息
        resource属性: 常用的
            用于指定配置文件的位置,是按照类路径的写法来写,并且必须存在于类路径下。
        url属性:
            是要求按照Url的写法来写地址
            URL:Uniform Resource Locator 统一资源定位符。它是可以唯一标识一个资源的位置。
            它的写法:
                http://localhost:8080/mybatisserver/demo1Servlet
                协议      主机     端口       URI

            URI:Uniform Resource Identifier 统一资源标识符。它是在应用中可以唯一定位一个资源的。
    -->


    <!--使用typeAliases配置别名,它只能配置domain中类的别名 -->
    <!--<typeAliases>-->
        <!--&lt;!&ndash;typeAlias用于配置别名。type属性指定的是实体类全限定类名。alias属性指定别名,当指定了别名就再区分大小写-->
        <!--<typeAlias type="com.itheima.domain.User" alias="user"></typeAlias>&ndash;&gt;-->

        <!--&lt;!&ndash; 用于指定要配置别名的包,当指定之后,该包下的实体类都会注册别名,并且类名就是别名,不再区分大小写&ndash;&gt;-->
        <!--<package name="com.itheima.domain"></package>-->
    <!--</typeAliases>-->

    <!--配置环境-->
    <environments default="mysql">
        <!-- 配置mysql的环境-->
        <environment id="mysql">
            <!-- 配置事务 -->
            <transactionManager type="JDBC"></transactionManager>
            <!--配置连接池-->
            <dataSource type="POOLED">

                 <property name="driver" value="com.mysql.cj.jdbc.Driver"></property>
                 <property name="url" value="jdbc:mysql://localhost:3306/eesy?serverTimezone=UTC"></property>
                 <property name="username" value="root"></property>
                 <property name="password" value="zp1536338"></property>
            </dataSource>
        </environment>
    </environments>
    <!-- 配置映射文件的位置 -->
    <mappers>
        <!--<mapper resource="com/itheima/dao/IUserDao.xml"></mapper>-->
        <!-- package标签是用于指定dao接口所在的包,当指定了之后就不需要在写mapper以及resource或者class-->
        <package name="com.itheima.dao"></package>
    </mappers>
</configuration>
IUserDao的配置信息
<?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">

参数占位符 会采用预处理。

4.parameterType(输入类型)

1.传入简单类型 。2.传入pojo对象 3.传递pojo包装对象

5.OGNL表达式:

OBject Graphic Navigation language 对象 图 导航 语言

他是通过对象的取值方法获取数据,在get给省略了

比如:我们获取用户的名称。 类是user.getxxx 他是user.username

mybatis 中为什么能直接写成username,而不是user.呢;因为在parameterType中已经提供了属性所属的类,此时不需要在写对象名。

4.ResultMap的结果类型。配置查询结果的列名和属性名的对应的关系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W3gcVSYJ-1599569430237)(C:\Users\wjq54\AppData\Roaming\Typora\typora-user-images\image-20200907203556456.png)]

5.起别名可以解决实体类属性和数据库属性保持一致。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H1asUAJi-1599569430259)(E:\IDEA-spring框架-笔记-资料\02-第二天\截图\非常重要的一张图-分析编写dao实现类Mybatis的执行过程(1)].png)

<properties url = "file:\\\D:\PS\day02_eesy_01mybatisCRUD\src\main\resources\jdbcConfig.properties">       
</properties >
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值