mybatis的使用

mybatis的使用

一、回顾jdbc的开发步骤

  • 1、加载驱动

    class.forName();
    
  • 2、获取数据库连接

    DriverManager.getConnect();
    
  • 3、获取sql执行器

    connect.getStatement();
    
  • 4、编写sql

    String sql="";
    
  • 5、执行sql

    statement.excuet();
    
  • 6、获取结果集

    Result
    
  • 7、释放资源

    state.close();
    con.close();
    

二、使用mybatis解决什么问题

  • 解决jdbc编码的SQL硬编码问题
  • 解决jdbc数据库连接的硬编码问题
  • 解决jdbcSQL参数传递的复杂性问题
  • 解决数据库数据和表的pojo的映射问题
  • 解决sql集合操作的复杂性

三、mybatis的执行原理

1、通过Resources.getResourceAsStream(配置文件)加载核心配置文件,

2、通过new SqlSessionFactoryBuilder().bulid(加载文件的输入流),获取SqlSessionFactory

3、通过 sqlSessionFactory.openFactory(),开启sql会话

4、sqlSession调用executor执行器

5、executor调用MapperStatement来处理sql语句和结果集的映射

四、两个配置文件

  • 核心配置文件mybatis-config.xml

    mybatis使用的DTD约束,标签的书写是有序的
    //环境配置
    <!--    default:默然使用的数据源环境-->
    <environments default="development">
        <environment id="development">
            <!--    事务管理 jdbc和MANAGE(只存在查询操作的时候使用)-->
            <transactionManager type="JDBC"/>
            <!--            数据源 POOLED(连接池) unplooed(只是每次请求的时候打开连接)
                JNDI:可以在EJB或者应用服务上使用
            -->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    
    //属性的配置,使用${}属性名来引用
     <properties resource="外部资源文件"></properties>
    //别名的配置
     <typeAliases></typeAliases>
    //设置配置,用来改变mybatis的运行时行为
    <settings>
        <setting name="" value=""/>
    </settings>
    //插件配置
    
    //映射文件配置
    <mappers>
        <!--  DTD约束要求标签的书写有顺序-->
       <mapper resource="y映射文件放的名称"/>
        <!--类扫描 :
            要求1、接口文件必须和配置文件在同一目录下
                2、配置文件的名称必须和接口的类名保持一致
        -->
     <mapper class="接口的全限定名"/>
        <!--包扫描 :
            要求1、接口文件必须和配置文件在同一目录下
                2、配置文件的名称必须和接口的类名保持一致
        -->
        <package name="com.zl.dao"/>
    </mappers>
    
  • sql映射文件mapper.xml

    查询
    <select></select>
    插入
    <insert></insert>
    修改
    <update></update>
    删除
    <delete></delete>
    条件
    <where></where>
    集合参数的处理,collection属性填写的是集合的类型
    <foreach></foreach>
    set设置
    <set></set>
    条件为真时才添加
    <if test=""></if>
    sql代码段的处理
    <sql></sql>
    

    五、传入参数处理方式

五、传入参数的处理

  • 三个及以上的参数封装成对象
  • 两个参数使用@param标注

六、sql结果输出的处理

  • 属性名和字段名一致,使用reultType
  • 属性名和字段名不一致,使用resultMap

七、动态代理接口的开发规则

  • 映射文件和接口在同一资源路径下
  • 映射文件的名字和接口的名字一致
  • 映射文件的id和接口的方法名一致
  • 映射文件的paramType和接口的方法参数一致
  • 映射文件的resultType/resultMap和接口的方法返回值一致

八、缓存机制

  • 一级缓存
    • 用来处理同一用户的多次相同的操作
    • 默认是开启的,并没有提供关闭
  • 二级缓存
    • 用来处理不同用户的相同操作
    • 使用
    • 对于缓存设计的数据pojo要实现序列化
    • 要释放资源
  • 注意:在会话中不要对数据库操作后的数据做修改,会造成缓存数据的失真
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值