ibatis增删查改的一个例子

第一步:创建Java工程或者web工程,同时在工程目录下创建lib目录,并将ibatis工作包ibatis-2.3.4.726.jar和数据库驱动例如:mysql-connector-java-5.1.7-bin.jar拷贝到lib目录下

第二步:创建数据库,创建脚本如下:

DROP TABLE IF EXISTS person;
CREATE TABLE person (
 
id int(8) NOT NULL AUTO_INCREMENT,
 
username varchar(32) NOT NULL,
 
password varchar(32) NOT NULL,
 
PRIMARY KEY (id))


ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=gbk;

第三步:在工程目录下构建数据库配置连接文件: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>

  <transactionManager type="JDBC" commitRequired="false">
    <dataSource type="SIMPLE">
      <property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>
      <property name="JDBC.ConnectionURL" value="jdbc:mysql://127.0.0.1:3306/test"/>
      <property name="JDBC.Username" value="root"/>
      <property name="JDBC.Password" value="123456"/>
    </dataSource>
  </transactionManager>

  <sqlMap resource="PersonSqlMap.xml"/>

</sqlMapConfig>
第四步:在工程目录下构建数据库表操作配置文件:PersonSqlMap.xml,具体内容如下:

<?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="Person"><!--命名空间-->

  <!-- 给一个类取一个别名,以免每次都得输入完整的类名,且便于以后的修改. -->
  <typeAlias alias="person" type="com.Person"/>

  <!-- resultMap元素描述了查询返回的列和类中属性的一一映射,如果表中的列名和类中的属性名完全一致则无须此元素. -->
  <resultMap id="PersonResult" class="person">
    <result property="id" column="id"/>
    <result property="username" column="username"/>
    <result property="password" column="password"/>
  </resultMap>

  <!-- 使用上面定义的resultMap进行无参数的查询. -->
  <select id="selectAllPerson" resultMap="PersonResult">
    select * from person
  </select>

  <!-- 在表中的列和类中的属性不一一对应时还可以采取的另外一种方法,这种方法无须用到resultMap,而是在查询的sql语句中采用'as'别名的方法. -->
  <select id="selectPersonById" parameterClass="int" resultClass="person">
    select
      id as id,
      username as username,
      password as password
    from person
    where id = #id#
  </select>
  
  <!-- 插入的示例,使用userDomain对应的类做为传入的参数 -->
  <insert id="insertPerson" parameterClass="person">
    insert into person (
      username,
      password
  )
    values (
      #username#, #password#
    )
  </insert>

  <!-- 更新的示例,使用userDomain对应的类做为传入的参数 -->
  <update id="updatePersonById" parameterClass="person">
    update person set
      username = #username#,
      password = #password#
    where
      id = #id#
  </update>

  <!-- 删除的示例,使用int对应的Integer做为传入参数 -->
  <delete id="deletePersonById" parameterClass="int">
    delete from person where id = #id#
  </delete>

</sqlMap>

第五步:构建数据封装类文件:Person.java,具体内容如下:

package com;

public class Person {

 private int id;
 private String username;
 private String password;

 public Person() {
  // 注意:这里无参构造函数必须要要,否则会抛空指针异常
 }

 public int getId() {
  return id;
 }

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

 public String getUsername() {
  return username;
 }

 public void setUsername(String username) {
  this.username = username;
 }

 public String getPassword() {
  return password;
 }

 public void setPassword(String password) {
  this.password = password;
 }

 @Override
 public String toString() {
  String str = "ID:" + id + "/t用户名:" + username + "/t密码:" + password;
  return str;
 }
}

第六步:构建数据库操作、静态工厂创建、测试类文件:OperateDatabase.java,具体内容如下:

package com;

import java.io.Reader;
import java.sql.SQLException;
import java.util.List;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public class OperateDatabase {
 
 private static SqlMapClient sqlMapClient;
 
 // 静态加载配置文件
 static {
  try {
   Reader reader = Resources.getResourceAsReader("./SqlMapConfig.xml");
   sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
   reader.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 // 创建新用户
 public static void insertPerson(Person person) throws SQLException {
  sqlMapClient.insert("insertPerson", person);
 }

 // 删除用户
 public static void deletePersonById(int id) throws SQLException {
  sqlMapClient.delete("deletePersonById", id);
 }

 // 查询用户
 @SuppressWarnings("unchecked")
 public static List<Person> selectAllPerson() throws SQLException {
  List<Person> personList = sqlMapClient.queryForList("selectAllPerson");
  return personList;
 }

 // 更新用户
 public static void updatePersonById(Person person) throws SQLException {
  sqlMapClient.update("updatePersonById", person);
 }

 public static void main(String[] args) throws Exception {

  // 插入新的用户
  Person per = new Person();
  per.setUsername("zhangwenhai");
  per.setPassword("456789234");
  insertPerson(per);

  // 按id删除用户
  deletePersonById(4);

  // 查询所有的用户
  for (Person person : selectAllPerson()) {
   System.out.println(person);
  }

  // 按id更新用户
  Person pp = new Person();
  pp.setId(1);
  pp.setUsername("wangfeiyan");
  pp.setPassword("996432");
  updatePersonById(pp);
 }
}

到这里一个用ibatis来实现增删查改的功能已经全部实现了......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值