• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    ibatis简单实现与配置
    那我们什么时候可以用到ibatis呢,我们用hibernate的时候会发现,有的时候hibernate不支持一些特别精确的查询,这个时候我们完全可以用到ibatis,因为他是半自动化的。一会我们可以看到,他的查询语句是我们在配置文件xml中写的。hibernate可以用到一些大型的项目当中,ibatis我们可以应用到一些小型的项目当中。
    下面我们看下ibatis的具体实现,hibernate中,我们都知道有一个hibernate.cfg.xml配置文件,和另一个*.hbm.xml配置文件,在ibatis中,我们同样也有两个配置文件,一个为SqlMapConfig.xml另一个为*.xml下面我们具体的看下两个配置文件中的具体配置方法。
    SqlMapConfig.xml配置方法
    ?xml version="1.0" encoding="UTF-8" ?>
    !DOCTYPE sqlMapConfig
    PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
    "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
    sqlMapConfig>
    settings cacheModelsEnabled="true"
    enhancementEnabled="true"
    lazyLoadingEnabled="true"
    errorTracingEnabled="true"
    maxRequests="32"
    maxSessions="10"
    maxTransactions="5"
    useStatementNamespaces="false" />
    !-- maxrequest 同时执行sql语句的最大条数 最好至少是maxTransactions的10倍数 而且大于maxSession
    maxTransactions 同时进入SqlMapClient.startTransaction()的 最大线程数
    maxSession 同一时间段内 最大session数 大于maxTransactions 小于maxRequest
    cacheModelsEnabled 全局性的启用或者禁用SqlMapClient的所有缓存model true为启用 默认为启用
    lazyLoadingEnabled 全局性的启用或者禁用SqlMapClient的所有延迟加载,调试程序使用 true为启用 默认为启用
    enhancementEnabled 全局性的启用或者禁用运行时字节码增强 false为禁用 默认为禁用
    useStatementNamespaces 如果启用本属性,必须使用权限定名来引用mappedstatement。
    这是由sql-map的名称和mapped-statment的名称合成,默认为false 禁用。
    -->
    transactionManager type="JDBC">
    dataSource type="SIMPLE">
    property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>
    property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost/sample"/>
    property name="JDBC.Username" value="root"/>
    property name="JDBC.Password" value="admin"/>
    !-- transactionManager元素为SQL Map配置事务管理服务
    type指定所使用的管理器类型可以为JDBC JTA EXTERNAL
    datasource元素是transactionManager的一部分
    为SQL Map数据源设置了一些列参数。
    dataSource type为 是根据选择链接数据库的方式决定的
    peoperty中的JDBC.Driver为 驱动
    ConnectionURL为链接地址
    Username为访问数据库的用户名
    Password为访问数据库的密码
    -->
    property name="Pool.MaximumIdleConnections" value="5" />
    property name="Pool.MaximumCheckoutTime" value="120000" />
    property name="Pool.TimeToWait" value="500" />
    property name="Pool.PingQuery" value="select 1 from sample" />
    property name="Pool.PingEnabled" value="false" />
    property name="Pool.PingConnectionsOlderThan" value="1" />
    property name="Pool.PingConnectionsNotUsedFor" value="1" />
    !-- MaximumIdleConnections数据库连接池中允许的挂起(idle)连接数
    MaximumCheckoutTime数据库联接池中,连接被某个任务所允许占用的最大时间,
    如果超过这个时间限定,连接将被强制收回。(毫秒)
    TimeToWait当线程试图从连接池中获取连接时,连接池中无可用连接可供使用,
    此时线程将进入等待状态,直到池中出现空闲连接。
    此参数设定了线程所允许等待的最长时间。(毫秒)
    PingQuery数据库连接状态检测语句。某些数据库在连接在某段时间持续处于空闲
    状态时会将其断开。而连接池管理器将通过此语句检测池中连接是否可用。
    检测语句应该是一个最简化的无逻辑SQL。如“select 1 from t_user”,
    如果执行此语句成功,连接池管理器将认为此连接处于可用状态
    PingEnabled是否允许检测连接状态。
    PingConnectionsOlderThan对持续连接时间超过设定值(毫秒)的连接进行检测。
    Pool.PingConnectionsNotUsedFor对空闲超过设定值(毫秒)的连接进行检测。
    -->
    /dataSource>
    /transactionManager>
    sqlMap resource="com/kobe/map/User.xml" />
    !-- sqlmap源的 位置"包名/ .xml注意包中间有.的时候用/代替" -->
    /sqlMapConfig>
    !-- 注意 1.0允许配置多个数据源,这引起了一些不好的实现,因此
    2.0版本只允许一个数据源,要使用多个部署/配置参数,您最好使用多个属性文件,
    不同的属性文件,或在创建SQL Map时传入不同的属性文件。 -->
    里面的配置文件,对我们初级入门的人来说,主要的配置就是连接数据库的配置。
    下面,我们在看下*.xml中的配置
    ?xml version="1.0" encoding="UTF-8"?>
    !DOCTYPE sqlMap
    PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
    "http://www.ibatis.com/dtd/sql-map-2.dtd">
    sqlMap namespace="User"> !-- 映射文件名称 -->
    typeAlias alias="user" type="com.kobe.map.User"/> !-- 给对应的类取别名 -->
    !-- sql语句 ![CDATA[可以避免SQL 中与XML 规范相冲突的字符对XML映射文件的合法性造成影响。
    -->
    select id="getUser" parameterClass="java.lang.String"
    resultClass="user">
    !-- parameterClass是参数类型
    resultClass是结果的类型
    如果sql语句包括参数, 那么格式是#id# -->
    ![CDATA[ select name,sex from t_user where name = #name#]]>
    /select>
    select id="getAllUser" resultClass="user">
    ![CDATA[ select name, sex from t_user where name = #name# ]]>
    /select>
    update id="updateUser" parameterClass="user">
    ![CDATA[ UPDATE t_user SET name=#name#, sex=#sex# WHERE id = #id# ]]>
    /update>
    delete id="deleteUser" parameterClass="user">
    delete from t_user where id=#id#
    /delete>
    insert id="insertUser" parameterClass="user">
    ![CDATA[ insert into t_user (id,name,sex) values (#id#,#name#,#sex#) ]]>
    /insert>
    /sqlMap>
    这里面配置文件我们可以看出来了。这里体现了ibatis半自动化的体现,因为他的sql语句并不是自动生成,而是我们自己写的,所以这样我们可以执行更精确的查询。
    下面我们在看下Test实现
    import java.sql.SQLException;
    import com.ibatis.common.resources.Resources;
    import com.ibatis.sqlmap.client.SqlMapClientBuilder;
    public class Test {
    public static void main(String args[]){
    //首先初始化iBatis获得一个SqlMapClient对象
    String resource = "com/kobe/map/SqlMapConfig.xml";
    com.ibatis.sqlmap.client.SqlMapClient sqlMap = null;
    try {
    java.io.Reader reader = com.ibatis.common.resources.Resources
    .getResourceAsReader(resource);
    sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
    } catch (Exception e) {
    e.printStackTrace();
    }
    // sqlMap系统初始化完毕,开始执行update操作
    try {
    sqlMap.startTransaction();
    User user = new User();
    //user.setId(24);
    //user.setName("lzq");
    //user.setSex(24);
    //sqlMap.insert("insertUser", user);
    //user.setId(24);
    //user.setName("kobelzq");
    //user.setSex(24);
    //sqlMap.update("updateUser", user); //key为User xml中配置的id名字 键为bean的名字
    user.setId(2);
    sqlMap.delete("deleteUser", user);
    sqlMap.commitTransaction();
    } catch (SQLException e) {
    System.out.println(e.getMessage());
    } finally {
    try {
    sqlMap.endTransaction();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    System.out.println("操作成功");
    }
    }
    }
    上面我加注释的地方,大家可以根据不同的需要,测试下不同的效果,我测试了三个效果,分别为增,删,改,查询大家要是感兴趣的话,可以自己写下。我这里少写了一个持久类,持久类的写法大家都熟悉,我就不在这里给大家展示了,无非就是get与set方法,大家可以自己实现一下。
    您可能感兴趣的文章:
    • struts2+spring+ibatis框架整合实现增删改查
    • 在Spring使用iBatis及配置讲解
    • ibatis结合oracle批量插入三种方法的测评
    • java~springboot~ibatis数组in查询的实现方法
    • ibatis迁移到mybatis3的注意事项
    • 通过ibatis解决sql注入问题
    • Mybatis报错: org.apache.ibatis.exceptions.PersistenceException解决办法
    • Mybatis与Ibatis的区别
    • 简单了解java ibatis #及$的区别和用法
    上一篇:asp php 清空access mysql mssql数据库的代码
    下一篇:初探 SOA
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    ibatis简单实现与配置 ibatis,简单,实现,与,配置,