Ibatis使用实践 - 1

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

1、定义POJO类:Student.java

package com.alibaba.ibatis.modules;

public  class Student {
   private  int id;
   private String name;
   private String address;
   private  float score;

   public  int getId() {
     return id;
  }

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

   public String getName() {
     return name;
  }

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

   public String getAddress() {
     return address;
  }

   public  void setAddress(String address) {
     this.address = address;
  }

   public  float getScore() {
     return score;
  }

   public  void setScore( float score) {
     this.score = score;
  }

  @Override
   public String toString() {
     return  "id: " + id +  ", name: " + name +  ", address: " + address
        +  ", score: " + score;

  }
}

2、定义使用接口:StudentService.java

package com.alibaba.ibatis.service;

import java.util.List;

import com.alibaba.ibatis.modules.Student;

public  interface StudentService {
   public  void addStudent(Student student);
   public  int updateStudent(Student student);
   public  int deleteStudent(Student student);
   public Student getStudentById( int id);
   public List<Student> getStudentsLike(String likeName);
   public List<Student> getAllStudents(); 
}
增加StudentService的实现类:StudentServiceImpl.java
package com.alibaba.ibatis.service.impl;

import java.io.Reader;
import java.sql.SQLException;
import java.util.List;

import com.alibaba.ibatis.modules.Student;
import com.alibaba.ibatis.service.StudentService;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public  class StudentServiceImpl  implements StudentService {

   static SqlMapClient sqlMapClient =  null;
   static {
    String resource =  "SqlMapConfig.xml";
     try {
      Reader reader = Resources.getResourceAsReader(resource);
      sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
    }  catch (Exception e) {
      e.printStackTrace();
    }
  }

  @Override
   public  void addStudent(Student student) {
     try {
      sqlMapClient.insert( "insertStudent", student);
    }  catch (SQLException e) {
      e.printStackTrace();
    }
  }

  @Override
   public  int deleteStudent(Student student) {
     int effectedRow = 0;
     try {
      effectedRow = sqlMapClient.delete( "deleteStudent", student);
    }  catch (SQLException e) {
      e.printStackTrace();
    }
     return effectedRow;
  }

  @SuppressWarnings( "unchecked")
  @Override
   public List<Student> getAllStudents() {
    List<Student> students =  null;
     try {
      students = sqlMapClient.queryForList( "getAllStudents");
    }  catch (SQLException e) {
      e.printStackTrace();
    }
     return students;
  }

  @Override
   public Student getStudentById( int id) {
    Student student =  null;
     try {
      student = (Student) sqlMapClient.queryForObject( "getStudentById",
          id);
    }  catch (SQLException e) {
      e.printStackTrace();
    }
     return student;
  }

  @Override
   public  int updateStudent(Student student) {
     int effectedRow = 0;
     try {
      effectedRow = sqlMapClient.update( "updateStudent", student);
    }  catch (SQLException e) {
      e.printStackTrace();
    }
     return effectedRow;
  }

  @SuppressWarnings( "unchecked")
  @Override
   public List<Student> getStudentsLike(String likeName) {
    List<Student> students =  null;
     try {
      students = sqlMapClient.queryForList( "getStudentsLike", likeName);
    }  catch (SQLException e) {
      e.printStackTrace();
    }
     return students;
  }

}

3、Ibatis的三个配置文件:

(1)与数据连接相关的配置文件jdbc.properties, 
(2)操作具体POJO的增删改查的配置文件
(3)总控文件
 
(1)与数据连接相关的配置文件:jdbc.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/ibatis
username=ibatis
password=ibatis
Pool.MaximumActiveConnections=10
Pool.MaximumIdleConnections=5
Pool.MaximumCheckoutTime=120000
Pool.TimeToWait=500
(2)操作具体POJO的增删改查的配置文件:student.xml, 其中对模糊查询的情况需要特别的注意:必须使用$来做占位符,如: SELECT * FROM student where name like '%$name$%'
<? 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 ="modules.student" >
   < typeAlias  alias ="Student"  type ="com.alibaba.ibatis.modules.Student"  />

   < insert  id ="insertStudent"  parameterClass ="Student" >
    INSERT INTO
    student(id, name, address, score)
    VALUES(#id#,#name#,#address#,#score#)
   </ insert >

   < select  id ="getStudentById"  parameterClass ="int"  resultClass ="Student" >
    SELECT * FROM student where id = #id#
   </ select >

   < select  id ="getAllStudents"  resultClass ="Student" >
    SELECT * FROM student
   </ select >
  
   < select  id ="getStudentsLike"  resultClass ="Student"  parameterClass ="String" >
    SELECT * FROM student where name like  '%$name$%'
   </ select >

   < update  id ="updateStudent"  parameterClass ="Student" >
    UPDATE student set
    name = #name#, address = #address#, score = #score# where id = #id#
   </ update >

   < delete  id ="deleteStudent"  parameterClass ="Student" >
    DELETE FROM
    student where id = #id# and name = #name# and address = #address# and
    score = #score#
   </ delete >

</ sqlMap >        
 
(3)总控文件:SqlMapConfig.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 ="jdbc.properties"  />
   < transactionManager  type ="JDBC" >
     < dataSource  type ="SIMPLE" >
       < property  name ="JDBC.Driver"  value ="${driver}"  />
       < property  name ="JDBC.ConnectionURL"  value ="${url}"  />
       < property  name ="JDBC.Username"  value ="${username}"  />
       < property  name ="JDBC.Password"  value ="${password}"  />
       < property  name ="Pool.MaximumActiveConnections"  value ="${Pool.MaximumActiveConnections}"  />
       < property  name ="Pool.MaximumIdleConnections"  value ="${Pool.MaximumIdleConnections}"  />
       < property  name ="Pool.MaximumCheckoutTime"  value ="${Pool.MaximumCheckoutTime}"  />
       < property  name ="Pool.TimeToWait"  value ="${Pool.TimeToWait}"  />
     </ dataSource >
   </ transactionManager >

   < sqlMap  resource ="com/alibaba/modules/student.xml"  />
</ sqlMapConfig >        
4、引入相应的依赖包:pom.xml
< dependency >
       < groupId >com.alibaba.external </ groupId >
       < artifactId >sourceforge.ibatis </ artifactId >
       < version >2.3.4 </ version >
     </ dependency >
     < dependency >
       < groupId >com.alibaba.external </ groupId >
       < artifactId >jdbc.mysql.mysql-connector </ artifactId >
       < version >5.1.6 </ version >
     </ dependency >
经测试,service中的各接口方法成功执行
 

本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/384686,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
XML Java 数据库连接
解决在mybatis中出现的org.apache.ibatis.exceptions.PersistenceException~
解决在mybatis中出现的org.apache.ibatis.exceptions.PersistenceException~
640 0
|
Java 数据库连接 开发工具
MyBatis注解开发报错org.apache.ibatis.builder.IncompleteElementException-解决方案
MyBatis注解开发报错org.apache.ibatis.builder.IncompleteElementException-解决方案
114 0
|
SQL Java 数据库连接
|
SQL Java 关系型数据库
|
SQL Java 程序员
|
Java 数据库连接 容器
|
SQL Java 关系型数据库