ibatiS概览

FactoryTool量产神器实战:5分钟搞定多块RK3568板卡并行烧录 本文详细介绍了使用瑞芯微FactoryTool对多块RK3568板卡进行高效并行烧录的实战指南。文章从硬件连接、驱动配置、软件操作到排错技巧,提供了一套完整的量产解决方案,重点阐述了如何利用该工具在5分钟内完成多设备固件烧录,并确保eMMC存储的写入稳定性与效率,大幅提升生产线吞吐量。 阅读详情
SqlMapConfig_ts.xml


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
    PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

<sqlMapConfig>

    <properties resource="db.properties">
    
    <settings cacheModelsEnabled="false" enhancementEnabled="true"
        lazyLoadingEnabled="false" errorTracingEnabled="true"
        useStatementNamespaces="true" />
        
    <transactionManager type="JDBC">
        <dataSource type="SIMPLE">
            <property name="JDBC.Driver" value="${driver}" />
            <property name="JDBC.ConnectionURL" value="${url}" />
            <property name="JDBC.Username" value="${user}" />
            <property name="JDBC.Password" value="${pword}" />
        </dataSource>
    </transactionManager>
        
    <sqlMap resource="sqlmap/ts/TS_TEST.xml" />
    
</sqlMapConfig>



db.properties

drive=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
user=test
pword=1

TS_TEST.xml

<sqlMap namespace="TS_STUDENT">
  <typeAlias alias="student"
       type="com.ts.entity.student" />
       
  <resultMap id = "testMap" class="student">
      <result column="ID" property="id" jdbcType="Integer" />
      <result column="NAME" property="name" jdbcType="VARCHAR" />
      <result column="FLAG" property="flag" jdbcType="CHAR" />
      <result column="BIRTH" property="birth" jdbcType="TIMESTAMP" />
  </resultMap>
 
  <sql id="getStudentCondition">
      <isNotNull prepend ="And" property="id">
           id like '%'||#id:VARCHAR#||'%'
      </isNotNull>
      
      <isNotNull prepend ="And" property="tabStatus">
        <isEqual property="tabStatus" compareValue="yes">
            flag='1'
        </isEqual>
        <isEqual property="tabStatus" compareValue="no">
            flag='0'
        </isEqual>
      </isNotNull>
      
  </sql>
 
  <select id="queryStu" resultMap="testMap" parameterClass="String" >
      select * from student where 1=1
      <include refid="getStudentCondition">
  </select>
 
  <!-- 批量删除对象的时候,iterate不要property属性 -->
  <delete id="delStud" parameterClass="java.util.List">
    delete FROM STUDENT WHERE ID IN
      <iterate conjunction="," open="(" close=")">
                #idList[]#
      </iterate>
  </delete>
 
  <!-- Iterate的使用,根据多个匹配条件查询,类似in(a,b,c)-->
  <select id="selectByIterate" parameterClass="java.util.List" resultClass="testMap">
       SELECT * FROM STUDENT WHERE 1=1
           <isNotNull prepend="AND" property="beanList">
             <iterate property="beanList" conjunction="or" open="(" close=")">
                (id=#beanList[].id# and name=#beanList[].name#)
             </iterate>
          </isNotNull>
          <isNotNull prepend="AND" property="birth">
            <![CDATA[
            birth < #birth:TIMESTAMP#
            ]]>
        </isNotNull>
  </select>
 
  <!--批量修改对象,iterate必须包括property属性-->
  <update id="updateStuIterate" parameterClass="student">
     update student set name=#name:varchar# where id in
            <iterate property="list" conjunction="," open="(" close=")">
                 #list[]#
            </iterate>
  </update>

</sqlMap>





可以通过使用动态SQL来组织灵活性更大的更通用的SQL,这样极大减少了编码量,是iBatis应用的第二大亮点。
     比如:一个动态的where条件
                <dynamic prepend="where">
                        <isNotEmpty prepend="and" property="$$$$$">
                                $name like '%'|| #$name# ||'%'
                        </isNotEmpty>
                        <isGreaterThan prepend="and" property="$$$$$" compareValue="$$$number">
                                $code like '%'|| #$code# ||'%'
                        </isGreaterThan>
                </dynamic> 



isNotNull:    Checks if a property is not null.
isNotEmpty:   Checks to see if the value of a Collection, String or String.valueOf()property is not null and not empty (“” or size() < 1).
                      
ibatIS的分页显示
    <sql id="pageSqlStart">
        SELECT * FROM(SELECT T.*, ROWNUM RN FROM (
    </sql>

    <sql id="pageSqlEnd">
        ) T WHERE
        <![CDATA[
         Rownum <= #endRow# ) WHERE RN >=#startRow#
        ]]>
    </sql>

    <select id="getStudent" parameterClass="conditionVo"
        resultMap="testMap">
        <include refid="pageSqlStart" />
            select  * from student
        <include refid="pageSqlEnd" />
    </select>      



    
SqlMapConfig.xml中参数设置:
    lazyLoadingEnabled:延迟加载,是一种只加载必要信息而推迟加载其他未明确请求的数据的技术;
    cacheModelsEnabled: 数据高速缓存,基于近期使用过的数据往往很快又会被用到的假设,将近期使用过的数据保存在内存中;
    enhancementEnabled:指定是否使用cglib中那些已优化的类来提高延迟加载的性能;
    useStatementNamespace:告诉ibatiS,在引用已映射语句时,是否需要使用限定名;
    
    
    
transactionManager元素中dataSource的值:
    simple:简单的数据源工厂,配置那种内置有简单连接池的数据源,因此除了实际的JDBC驱动程序之外,该数据源工厂所需的其他东西都包含在ibatiS中;
    dbcp:用于使用Jakarta Commons数据库连接池实现;
    jndi:允许ibatiS共享通过jndi定位的基于容器的数据源
    
批处理执行更新、删除等操作:
  public void deleteInfo(final List list, final String type) {
    this.getSqlMapClientTemplate().execute(new SqlMapClientCallback() {
      public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLException {
        executor.startBatch();
        for (int i = 0; i < list.size(); i++) {
          Student stu = (Student) list.get(i);
          /**
           * type:0:删除;1:恢复
           */
          if ("0".equals(type)) {
            stu.setDelStatus("1");
            executor.update("TEST.updateStu", stu);
          } else if ("1".equals(type)) {
            stu.setDelStatus("0");
            executor.update("TEST.updateStu", stu);
          } else {
            executor.delete("TEST.deleteStu", stu);
          }
        }
        executor.executeBatch();
        return null;
      }
    });
  }


ibatis缓存

1、sqlMapConfig.xml中配置

   

1.SqlMapConfig.xml中  
<settings  
cacheModelsEnabled="true" //设置为true  
enhancementEnabled="true"  
lazyLoadingEnabled="true"  
.............  
/> 

2、配置具体的sqlMap.xml


    <cacheModel id="baby-cache" type="LRU" readOnly="false"  
            serialize="true">  
            <flushInterval hours="24" />  
            <flushOnExecute statement="getBabyByParams" /> 
            // 如果在sqlMapConfig里面设置了useStatementNamespaces="true",需要带上namespace,
            // 如<flushOnExecute statement="Product.getBabyByParams"/> 
            <property value="600" name="size" />  
        </cacheModel>  
      
      
    <select id="getBabyByParams" resultMap="baby-Result" cacheModel="baby-cache">  
            select * from Baby  
            <dynamic prepend="where">  
                <isPropertyAvailable property="name" prepend="and">  
                    name = #name#  
                </isPropertyAvailable>  
                <isPropertyAvailable property="sex" prepend="and">  
                    sex =  
                    #sex,jdbcType=VARCHAR,javaType=com.yajun.enumdemo.SexEnum#  
                </isPropertyAvailable>  
                <isPropertyAvailable property="BirthdayBondStart"  
                    prepend="and">   
                   <![CDATA[ 
                         birthday >= cast(#BirthdayBondStart# as datetime) 
                   ]]>  
                </isPropertyAvailable>  
                <isPropertyAvailable property="BirthdayBondEnd"  
                    prepend="and">  
                     <![CDATA[ 
                         birthday <= cast(#BirthdayBondEnd# as datetime) 
                     ]]>  
                </isPropertyAvailable>  
                <isPropertyAvailable property="hobby" prepend="and">  
                    hobby like '%'||#hobby#||'%'  
                </isPropertyAvailable>  
            </dynamic>  
        </select>  

id: cacheModel的id.

type: cache的类型. ibatis目前提供了LRU,MEMORY,FIFO,OSCACHE这四种.

      FIFO: com.ibatis.sqlmap.engine.cache.fifo.FifoCacheController   

               FIFO Cache 实现用“先进先出”原则来确定如何从 Cache 中清除对象。当 Cache 溢出时,最先进入 Cache 的对象将从 Cache 中清除。

               对于短时间内持续引用特定的查询而后很可能不再使用的情况,FIFO Cache 是很好的选择

     LRU:  com.ibatis.sqlmap.engine.cache.fifo.LruCacheController
               实现用“近期最少使用”原则来确定如何从 Cache 中清除对象。当 Cache溢出时,最近最少使用的对象将被从 Cache 中清除。使用这种方法,如果一个

              特定的对象总是被使用,它将保留在 Cache 中,而且被清除的可能性最小。对于在较长的期间内,某些用户经常使用某些特定对象的情况(例如,在

             PaginatedList 和常用的查询关键字结果集中翻页) ,LRU Cache 是一个不错的选择。

    MEMORY: com.ibatis.sqlmap.engine.cache.fifo.MemoryCacheController

              MEMORY高速缓存是一种基于引用的高速缓存。MEMORY高速缓存模型对于那些更关注内存的管理策略而不是对象的访问策略的应用程序而言是完美 

              的。有了STRONG、SOFT、WEAK这三种引用类型,就可以确定哪些结果应该比其他结果保留更长的时间。

  •       OSCACHE: com.ibatis.sqlmap.engine.cache.fifo.OSCacheController



      当然,你也可以自己来实现Cache, 你需要做的是让你的Cache类 implements com.ibatis.sqlmap.engine.cache.CacheController.

readOnly: 是否只读. 默认为true, 只读.

serialize: 是否从Cache中读取同一个对象,还是对象的副本.
           只有在readOnly=false才有效.
   因为Cache是只读的,那么为不同session返回的对象肯定是一个.
   只有在Cache是可读写的时候,才需要为每个session返回对象的副本.

flushInterval: Cache刷新间隔. 可以配置hours,minutes,seconds,milliseconds.
           注: 不是说,间隔时间到了,在Cache的statement会自己刷新,而是说,在间隔时间过了后,下次的查询
   将不会从Cache中直接去值,而会用SQL去查.也就是: 如果,间隔时间过了,还没有Cache对应的statement执行
   的话,那么Cache中就会一直是旧的,不用担心Cache数据是旧的,因为下次的查询将会直接从SQL查询,而非Cache,查询的结果也会去更新Cache的值.

flushOnExecute: 当这些statement被执行了,那么下次的查询将会通过SQL去查,同时用查询结果更新Cache.
           注: 和flushInterval的刷新一样,不是主动刷新,而是由下次查询来触发被动刷新.
               在一个cacheModel中可以指定多个flushOnExecute.

property: 这是针对cacheModel的额外的一些属性配置.不同type的cacheModel将会有自己专有的一些property配置.
          FIFO: <property name="size" value="100" />
          LRU: <property name="cache-size" value="100" />
  MEMORY: <property name="reference-type" value="WEAK" />




java调用第三方api接口获取数据 弊端,但是并不是每个接口都适用于这套模板,之前写的接口不适用,都是在这个模板里做了定制处理(if 特殊表 -》处理),需要考虑兼容之前的代码,这种兼容代码,有风险会改掉之前的逻辑个人喜欢,有一个接口,写一段代码灵活自由些。2.还有一部分是对post请求的返回数据,做处理,因为json返回的格式如果双方没有约定好,里面数据是多层json嵌套,需要做处理。江同事交接的就是这个代码模板,可以看下源码调试一下,之前交接的视频,也可以看下,主要还是看代码理解快些,将 写好的代码达成jar包,上传到linux上去, 阅读详情

相关推荐

pwscf与wannier90 Hands-On实战训练(一)——费米面计算为例

系列文章目录 Quantum Espresso Hands-On实战训练(三)——DOS计算 文章目录系列文章目录计算过程pwscf直接得到等能面pwscf和wannier90得到等能面pwscf直接得到等能面1. scf2. nscf3. 后处理pwscf和wannier90得到等能面1. Kpoints2. scf3. nscf4. pw2wan及wannier90.x5. XCrySDen可视化 计算过程 pwscf直接得到等能面 pwscf和wannier90得到等能面 pwscf直接得到等能面

weixin_45973682的博客 5070

iBatis的Settings节点参数详解[转]

(1) cacheModelsEnabled: 是否启用SqlMapClient上的缓存机制。建议设为"true"。默认值为“true”。 (2) enhancementEnabled: 是否针对POJO启用字节码增强机制以提升getter/setter的调用效能,避免使用JavaReflect所带来的性能开销。同时,这也为 Lazy Loading带来了极大的性能提升。建议设为...

weixin_30402085的博客 257

CAN总线错误帧全解析:从数据包到硬件层的故障树分析

本文深入解析CAN总线错误帧的故障树分析方法,从数据包到硬件层全面剖析错误机制。通过物理层信号测试、数据链路层错误解码和应用层协议排查,提供系统化的诊断框架。结合CANoe配置和示波器波形分析,帮助工程师快速定位总线故障,提升系统可靠性。

weixin_26742753的博客 488

ibatis 缓存机制初探

ibatis 缓存机制初探 一,IBATIS 缓存机制使用   1,sqlMapConfig.xml中配置 Xml代码 1.SqlMapConfig.xml中    &lt;settings   cacheModelsEnabled="true" //设置为true    enhancementEnabled="true"   lazyLo...

maqianmaqian的专栏 201

基于机器学习和辐射传输的地表温度模拟方法对比

对于不同的地表类型和不同的年份,经验方法是实用的,虽然整体精度不如物理方法,但具有计算速度快、对模型内部结构考虑较少等优点。尽管深度学习等回归的经验方法不需要考虑辐射传输和能量平衡的具体过程, 但在其输入参数的选择上也不能是无序和随机的,而是应选择有关相应物理过程的参数。经验方法在处理不同年份相同地表类型或表现相对较好, RMSE 约为 1.50K,但在不同地表类型且不同年份模拟结果较差, RMSE 约为 3.0K, 虽然精度不如物理方法,但它具有计算速度快,不需过多考虑模型内部结构的优点。

2301_77907355的博客 1021

基于MacOS本地部署OpenClaw+Ollama技术要点

本文基于MacOS系统下本地部署OpenClaw+Ollama的实操经验,梳理部署全流程中的核心技术要点、环境配置规范、故障排查方法及落地优化方案,聚焦“本地AI模型联动OpenClaw技能调度”的核心需求,为同类本地部署场景提供可复用的技术参考,规避常见部署风险,确保系统稳定运行。

在科技赋能新时代,共同探索基础理论和宇宙未知。 5164

Ibatis手册上配置参数说明

具体配置参数如下: true" lazyLoadingEnabled="true" enhancementEnabled="true" errorTracingEnabled="true" maxSessions="1024" maxTransactions="512" maxRequests="2048" useStatementNamespaces="true" />

xiaozaoxi的专栏 610

【android bluetooth 案例分析 01】【HiCar 详解 3】【hicar时如何交换Wifi参数的】

如果直接使用 L2CAP(不经过 RFCOMM),会需要额外的协议来保证可靠性,而 RFCOMM 天然支持。BLE 广播的数据长度受限(31 字节 / 255 字节扩展),不适合传输复杂的 Wi-Fi 连接参数。使用 RFCOMM 传输参数,可以兼容不同厂商的车机和手机,而无需依赖特殊的蓝牙功能。手机解析这些参数,并使用 Wi-Fi Direct 连接到车机。,然后才能让 Wi-Fi Direct 进行真正的数据传输。,适合传输 Wi-Fi 连接参数等关键数据。,可以安全地交换 Wi-Fi 连接信息。

奔跑吧 android 的博客 1740

Ibatis中xml文件的常用配置

1、&lt;iterate&gt;:这属性遍历整个集合,并为List集合中的元素重复元素体的内容。     Iterate的属性:     prepend - 可被覆盖的SQL语句组成部分,添加在语句的前面(可选)     property - 类型为java.util.List的用于遍历的元素(必选)     open - 整个遍历内容体开始的字符串,用于定义括号(可选)     cl...

学而时习之不亦说乎 211

【ROS】Nav2源码之nav2_collision_monitor(碰撞监测)详解

nav2_collision_monitor碰撞监视器是一个节点,为机器人提供了一个额外的安全级别。它使用来自传感器的数据,执行若干与避免碰撞相关的任务,绕过成本图和轨迹规划器,监测是否需要紧急停止或者减速。

郭老二 1456

Python爬虫反爬:突破Cloudflare 5秒盾(免费方案,小红书/知乎可用)

这套方案的核心优势是“真实模拟+免费无门槛”无需付费代理、无需复杂JS解密,仅用playwright模拟真实浏览器,即可突破Cloudflare 5秒盾;适配小红书、知乎、豆瓣等主流平台,修改配置即可复用;兼顾易用性和稳定性,新手也能快速上手,企业级场景可通过IP轮换、异步爬取进一步优化。“模拟人类行为到底”——Cloudflare的反爬本质是区分“机器”和“人类”,只要爬虫的浏览器指纹、行为特征与人类一致,就能稳定绕过限制。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2881

ibator自动生成工具安装和使用

1.使用link方式在线安装ibator。     eclipse菜单  help--&gt;          software updates--&gt;          add site--&gt;(填入在线安装地址:http://ibatis.apache.org/tools/ibator )         --&gt;一直下一步安装   2.在你的工程某个目录下单击右键--&g...

iteye_1501的博客 450

睿抗机器人魔力元宝在完成任务过程中如何使机械臂先到达白色盒子上方而不是先到达工作台?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1378

iBATIS学习01:iBATIS概览+iBATIS十分钟快速上手操练

iBATIS概览+iBATIS十分钟快速上手操练 【iBATIS概览】 iBATIS是一个持久框架,可用来配置 Java 类的属性和 RDBMS 内的表列之间的映射。在配置时,此框架负责处理 JDBC 连接和分配。可以使用 XML 文件配置 iBATIS。 iBATIS 主要的设计目的是为了让我们执行 SQL 时对输入输出的数据管理更加方便,所以如何方便的让我们写出 SQL 和方便的获取 S

forDream的专栏 701

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IBATIS总结

iBATIS 学习总结 一、        了解iBATIS 1.什么是iBATIS “一个映射层,在对象和数据库间传递数据,并保持两者与映射层本身独立”  iBatis 不是直接在类和数据表或字段与列之间进行关联,而是把SQL语句的参数和返回结果映射至类。iBatis是出于类和数据表之间的一个中间层。这使得它在类和数据表之间进行映射时更加灵活。 iBATIS 是把SQL语句的参数和返回

duci2的专栏 2505

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

iBATIS入门简介

一、iBATIS教程之iBATIS介绍: iBATIS是什么呢?相对于Hibernate和Apache OJB等“一站式”ORM解决方案而言,iBATIS是一种“半自动化”的ORM实现。 这个框架将让你能够更好的在JAVA应用中设计和实现实体层。这个框架有两个主要的组成部分,一个是SQL Maps,另一个是Data Access Objects。另外还包括一些可能很有用的工具。

冷丶Feng 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ibatis 框架介绍及使用详解

 iBATIS 是什么?这一节将描述 iBATIS 中的单独的 API,以及为什么您可能使用它们,并了解 iBATIS 优于其他数据库映射框架的优点。iBATIS 框架简言之,iBATIS 由两个单独的框架组成。可以将 Data Mapper 框架专门用于 OR 映射,OR 映射是 Java 域对象到数据库中关系表的映射。DAO 框架为应用程序提供了一个简洁一致的访问基

xiemeikj的专栏 1万+

什么是iBATIS

1、什么是iBATIS 1.1作者        Clinton Begin,很牛X的名字 1.2背景故事     Clinton Begin于2001年启动iBATIS项目,最先的焦点是发展密码软件解决方案。第一个iBATIS产品是Secrets,是一个象PGP的个人数据加密器和签名工具。Secrets完全用Java编写并在一个开源许可下发布。     在发布Secrets Java版

daojianhong的专栏 880

ibatis 使用文档 (上篇)

(代码下载地址:http://download.youkuaiyun.com/detail/partner4java/4760043) iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。 创建于2002年,后很快加入了Apache,但是2010年又易主到google code,并改名为MyBatis。 本篇文章主要是基于iBATIS来进行展示,后面会再发

java相关技术(partner4java专栏)希望对您的学习有所帮助 4286

iBATIS总结

1.1作者       Clinton Begin,很牛X的名字1.2背景故事    Clinton Begin于2001年启动iBATIS项目,最先的焦点是发展密码软件解决方案。第一个iBATIS产品是Secrets,是一个象PGP的个人数据加密器和签名工具。Secrets完全用Java编写并在一个开源许可下发布。    在发布Secrets Java版后不久,iBATIS项目陷入困境转而关注W...

mno2330的博客 910

Spring与iBATIS的集成

iBATIS似乎已远离众说纷纭的OR框架之列,通常人们对非常流行的Hibernate情有独钟。但正如Spring: A Developers Notebook作者Bruce Tate 和Justin Gehtland所说的那样,与其他的OR框架相比,iBATIS独辟蹊径:“iBATIS不是试图从根本上掩盖SQL,实际上,它是在拥抱SQL。”但别犯愁:SQL本身具备了一些重要的功能,并且通过模板的

tanlier1的专栏 1350

iBATIS SQL Maps(一)

前段时间写了些 Hibernate 方面的系列文章,网友们反映还不错。在接下来的时间里,我将会引入另外一种 O/R Mapping 解决方案——iBATIS,本系列将沿用 Hibernate 系列文章的风格。什么是 iBATIS ?    和众多的 SourceForge 开源项目一样,iBATIS 曾经也是其中的一员。在2004年11月3日成功地成为了 Apache Incubator 下的子项

成都心情 7239

iBATIS框架源码剖析

iBATIS框架源码剖析 基本信息 作者: 任钢    出版社:电子工业出版社 ISBN:9787121108723 上架时间:2010-7-2 出版日期:2010 年6月 开本:16开 页码:510 更多详细信息请查看:http://www.china-pub.com/196843更有精彩样张抢先试读:http://www.china-pub.com/ureader/product.a...

weixin_33841503的博客 162

iBATIS In Action (三 )iBATIS的安装和配置

译注:本章讲解的是iBATIS的安装和配置,原书使用的是Java版本,与.NET版本的安装、配置过程不尽相同,因此这里直接就.NET版本进行说明。主要参考的是iBATIS官方的DataMapper Guide文档,本章的配置主要针对DataMapper,DataAccess的配置将出现在第10章。 iBATIS的安装过程快速而简单。它是一个类库,而不是应用程序,所以实际上并不需要安装,但要在应...

weixin_30471065的博客 220

ibatis使用文档(上篇)

iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。 创建于2002年,后很快加入了Apache,但是2010年又易主到google code,并改名为MyBatis。 本篇文章主要是基于iBATIS来进行展示,后面会再发一篇和MyBatis的对比。 (本文大多摘自《iBATIS in action》一书,若有时间学习此书,建议不要看本文--因

Ltw518的专栏 2797
上一篇: 如何在 Eclipse 中使用命令行
下一篇: Linux文本编辑器Vim
angleretar
博客等级 码龄18年 6粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值