IBatis介绍1

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介:
   由于之前写的文章在提交的时候出错,导致没保存上 。重新打起精神,继续这篇Ibatis的基础介绍。

1、Ibatis功能简介

  Ibatis用于完成OR的映射,但又没有Hibernate那么复杂,它只是减少了sql在java代码中的出现,sql语句都在xml配置文件中去完成。需要引入mysql的驱动包和Ibatis的包即可,本次使用的是mysql5.1、Ibatis2.3.4版本。文章下面有附件,包含了本次的代码、驱动和ibatis的jar包。

2、具体步骤如下:

1)在Mysql中创建表
create  table t_user(id  intname  varchar(10), sex  int);
 
2)创建POJO类: User.java
package com.ctgusec.zhupan.model;

import java.io.Serializable;

public  class User  implements Serializable {
   private  static  final  long serialVersionUID = 1L;
   private Integer id;
   private String name;
   private Integer sex;

   public Integer getId() {
     return id;
  }

   public  void setId(Integer id) {
     this.id = id;
  }

   public String getName() {
     return name;
  }

   public  void setName(String name) {
     this.name = name;
  }

   public Integer getSex() {
     return sex;
  }

   public  void setSex(Integer sex) {
     this.sex = sex;
  }

   public  static  long getSerialversionuid() {
     return serialVersionUID;
  }
}
 
3)创建User类的对应Ibatis配置文件:User.xml, 在包com.ctgusec.zhupan.maps下面
<? xml  version ="1.0"  encoding ="UTF-8"  ?>

<!DOCTYPE sqlMap            
        PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"            
        "http://ibatis.apache.org/dtd/sql-map-2.dtd">

< sqlMap  namespace ="User" >

   < typeAlias  alias ="user"  type ="com.ctgusec.zhupan.model.User"  />
   < select  id ="getUser"  parameterClass ="java.lang.String"
     resultClass ="user" >

    select name,sex from t_user
    where name = #name#
   </ select >

   < select  id ="getAllUser"  resultClass ="user" >

    select
    name,
    sex
    from t_user
   </ select >

   < update  id ="updateUser"  parameterClass ="user" >

    UPDATE t_user
    SET
    name=#name#,
    sex=#sex#
    WHERE id = #id#
   </ update >

   < insert  id ="insertUser"  parameterClass ="user" >
    INSERT INTO t_user (name,
    sex) VALUES ( #name#, #sex# )
   </ insert >

   < delete  id ="deleteUser"  parameterClass ="java.lang.String" >
    delete from t_user
    where
    id=#value#
   </ delete >

</ sqlMap >    
 
4)配置Ibatis的总控文件:SqlMapConfig.xml,在包com.ctgusec.zhupan.maps下面
<? 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 >

   < settings  cacheModelsEnabled ="true"  enhancementEnabled ="true"
     lazyLoadingEnabled ="true"  errorTracingEnabled ="true"  maxRequests ="32"
     maxSessions ="10"  maxTransactions ="5"  useStatementNamespaces ="false"  />

   < transactionManager  type ="JDBC" >
     < dataSource  type ="SIMPLE" >
       < property  name ="JDBC.Driver"  value ="com.mysql.jdbc.Driver"  />
       < property  name ="JDBC.ConnectionURL"  value ="jdbc:mysql://localhost:3306/ibatis"  />
       < property  name ="JDBC.Username"  value ="root"  />
       < property  name ="JDBC.Password"  value ="123"  /> <!--com测试admin-->
       < property  name ="Pool.MaximumActiveConnections"  value ="10"  />
       < 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"  />

     </ dataSource >
   </ transactionManager >

   < sqlMap  resource ="com/ctgusec/zhupan/maps/User.xml"  />
</ sqlMapConfig >    
 
5)对Ibatis的调用,只需要调用Ibatis的POJO对应的配置文件中的id即可
package com.ctgusec.zhupan;

import java.sql.SQLException;
import java.util.List;
import com.ctgusec.zhupan.model.User;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public  class ExampleMain {
   public  static  void update() {
     // 首先初始化iBatis获得一个SqlMapClient对象
    String resource =  "com/ctgusec/zhupan/maps/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( new Integer(1));
      user.setName( "zhupan");
      user.setSex( new Integer(1));
      sqlMap.update( "updateUser", user);
      sqlMap.commitTransaction();
    }  catch (SQLException e) {
      System.out.println(e.getMessage());
    }  finally {
       try {
        sqlMap.endTransaction();
      }  catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }

   public  static List getUser() {
     // 首先初始化iBatis获得一个SqlMapClient对象
    String resource =  "com/ctgusec/zhupan/maps/SqlMapConfig.xml";
    com.ibatis.sqlmap.client.SqlMapClient sqlMap =  null;
    List user =  null;
     try {
      java.io.Reader reader = com.ibatis.common.resources.Resources
          .getResourceAsReader(resource);
      sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
    }  catch (Exception e) {
      e.printStackTrace();
    }
     // sqlMap系统初始化完毕,开始执行getAllUser操作
     try {
      sqlMap.startTransaction();
      user = sqlMap.queryForList( "getAllUser"null);
      sqlMap.commitTransaction();
    }  catch (SQLException e) {
      System.out.println(e.getMessage());
    }  finally {
       try {
        sqlMap.endTransaction();
      }  catch (SQLException e) {
        e.printStackTrace();
      }
    }
     return user;
  }

   public  static  void main(String[] args) {
     // update();
    List user = getUser();
     //System.out.println(user.size());
      for ( int i = 0; i < user.size(); i++) {
     System.out.println(((User) user.get(i)).getName());
     }

  }
}
 
6) 测试,运行结果如下
zhangsan
lisi
wangwu

3、总结

  Ibatis减少了sql语句在java代码中的出现,java编程只需要操作对象就可以了,是面向对象的编程更加的纯洁。
 
【注意】
1、dbcp直连mysql数据库

 
 
  1. Properties pros = new Properties(); 
  2.     pros.put("driverClassName""com.mysql.jdbc.Driver"); 
  3.     pros.put("url""jdbc:mysql://10.20.144.27:3306/druid"); 
  4.     pros.put("username""druid"); 
  5.     pros.put("password""druid123"); 
  6.     DataSource dataSource = BasicDataSourceFactory.createDataSource(pros); 
Connection conn = dataSource.getConnection();


本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/275606,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
关系型数据库 Java 数据库连接
PostgreSQL从小白到高手教程 - 第47讲:JMETER工具使用
PostgreSQL从小白到高手教程 - 第47讲:JMETER工具使用
616 3
|
4月前
|
人工智能 前端开发 数据库
2025年最适合初学者的AI编程工具Top3:零基础也能写出专业级代码_ai代码生成器推荐
李响团队推荐2025年三款适合零基础的AI编程工具:Lynx AI、CodePal、DevMate。无需代码基础,说句话就能生成程序,帮你快速入门、边用边学,轻松迈入编程世界。
1938 154
|
存储 JavaScript 前端开发
|
SQL 存储 运维
MySQL查询优化终极版(强烈建议收藏)
select查询优化一直是日常开发和数据库运维绕不开的一道坎,SQL的查询速度决定了页面的加载速度,进一步决定了客户浏览体验。
510 0
MySQL查询优化终极版(强烈建议收藏)
|
JavaScript 前端开发 Java
《正则表达式经典实例(第2版)》——1.3 正则表达式工具
除非已经拥有了相当长的使用正则表达式编程的经验,否则建议你先在一个工具中试验一下正则表达式,而不是直接在源代码中使用它们。本章和第2章中提供的正则表达式示例都是原始正则表达式,其中并不包含编程语言(即使是Unlx shell)所必需的额外的转义符号。
2626 0
|
5月前
|
运维 NoSQL Linux
TinyRDM 1.2.3 Windows版安装教程(附Redis客户端下载及详细步骤)​
TinyRDM是一款跨平台的免费Redis图形化管理工具,界面简洁,支持Windows、Mac、Linux。无需命令操作,可直观连接、查看和管理Redis数据,适合开发调试与日常运维,新手友好。
|
6月前
|
人工智能 机器人 计算机视觉
当AI有了“分身”:虚拟化身与情感交互的实战指南
当AI有了“分身”:虚拟化身与情感交互的实战指南
544 0
|
关系型数据库 MySQL Java
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException 异常解决
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException 异常解决
|
存储 缓存 算法
ConcurrentHashMap的演进:从Java 8之前到Java 17的实现原理深度剖析
ConcurrentHashMap的演进:从Java 8之前到Java 17的实现原理深度剖析
|
存储 Java BI
探索Apache POI库:强大的Excel和Word文档处理工具
在企业应用和数据处理中,Excel和Word文档是常见的数据交换和存储格式。然而,处理和操作这些文档可能是一项繁琐的任务。Apache POI库作为一款强大的文档处理工具,可以帮助我们更轻松地进行Excel和Word文档的读写、编辑和生成。本文将深入探讨Apache POI库的基本概念、特点,以及如何在实际应用中使用它进行文档处理。
1688 0

热门文章

最新文章