zoukankan      html  css  js  c++  java
  • 【web开发学习笔记】ibatis学习总结

    ibatis学习总结

    ibatis数据库配置文件

    <?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>
        <dataSource type="SIMPLE">
          <property name="JDBC.Driver" value="org.hsqldb.jdbcDriver"/>
          <property name="JDBC.ConnectionURL" value="jdbc:hsqldb:."/>
          <property name="JDBC.Username" value="carp"/>
          <property name="JDBC.Password" value="123"/>
        </dataSource>
      </transactionManager>
      <sqlMap resource="com/mydomain/data/Account.xml"/>
    </sqlMapConfig>

    数据库与model映射配置文件

    <?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="Account">
      <resultMap id="AccountResult" class="Account">
        <result property="id" column="ACC_ID"/>
        <result property="firstName" column="ACC_FIRST_NAME"/>
        <result property="lastName" column="ACC_LAST_NAME"/>
        <result property="emailAddress" column="ACC_EMAIL"/>
      </resultMap>
    
      <!-- Select with no parameters using the result map for Account class. -->
      <select id="selectAllAccounts" resultMap="AccountResult">
        select * from ACCOUNT
      </select>
    
      <!-- A simpler select example without the result map.  Note the 
           aliases to match the properties of the target result class. -->
      <select id="selectAccountById" parameterClass="int" resultClass="Account">
        select
          ACC_ID as id,
          ACC_FIRST_NAME as firstName,
          ACC_LAST_NAME as lastName,
          ACC_EMAIL as emailAddress
        from ACCOUNT
        where ACC_ID = #id#
      </select>
       
      <!-- Insert example, using the Account parameter class -->
      <insert id="insertAccount" parameterClass="Account">
        insert into ACCOUNT (
          ACC_ID,
          ACC_FIRST_NAME,
          ACC_LAST_NAME,
          ACC_EMAIL
        values (
          #id#, #firstName#, #lastName#, #emailAddress#
        )
      </insert>
    
      <!-- Update example, using the Account parameter class -->
      <update id="updateAccount" parameterClass="Account">
        update ACCOUNT set
          ACC_FIRST_NAME = #firstName#,
          ACC_LAST_NAME = #lastName#,
          ACC_EMAIL = #emailAddress#
        where
          ACC_ID = #id#
      </update>
    
      <!-- Delete example, using an integer as the parameter class -->
      <delete id="deleteAccountById" parameterClass="int">
        delete from ACCOUNT where ACC_ID = #id#
      </delete>
    </sqlMap>

    Model对象

    package com.mydomain.domain;
    
    public class Account {
    
      private int id;
      private String firstName;
      private String lastName;
      private String emailAddress;
     /*Model层,主要进行数据訪问部分*/
      public int getId() {
        return id;
      }
    
      public void setId(int id) {
        this.id = id;
      }
    
      public String getFirstName() {
        return firstName;
      }
    
      public void setFirstName(String firstName) {
        this.firstName = firstName;
      }
    
      public String getLastName() {
        return lastName;
      }
    
      public void setLastName(String lastName) {
        this.lastName = lastName;
      }
    
      public String getEmailAddress() {
        return emailAddress;
      }
    
      public void setEmailAddress(String emailAddress) {
        this.emailAddress = emailAddress;
      }
    }
    

    DAO数据訪问对象

    package com.mydomain.data;
    
    import com.ibatis.sqlmap.client.SqlMapClient;
    import com.ibatis.sqlmap.client.SqlMapClientBuilder;
    import com.ibatis.common.resources.Resources;
    import com.mydomain.domain.Account;
    
    import java.io.Reader;
    import java.io.IOException;
    import java.util.List;
    import java.sql.SQLException;
    
    public class SimpleExample {
    
      /**
       * SqlMapClient instances are thread safe, so you only need one.In this case, we'll use a static singleton. 
       */
      private static SqlMapClient sqlMapper;
    
      /**
       * It's not a good idea to put code that can fail in a class initializer,
       * but for sake of argument, here's how you configure an SQL Map.
       */
      static {
        try {
          Reader reader = Resources.getResourceAsReader("com/mydomain/data/SqlMapConfig.xml");
          sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
          reader.close(); 
        } catch (IOException e) {
          // Fail fast.
          throw new RuntimeException("Something bad happened while building the SqlMapClient instance." + e, e);
        }
      }
    
      public static List selectAllAccounts () throws SQLException {
        return sqlMapper.queryForList("selectAllAccounts");
      }
    
      public static Account selectAccountById  (int id) throws SQLException {
        return (Account) sqlMapper.queryForObject("selectAccountById", id);
      }
    
      public static void insertAccount (Account account) throws SQLException {
        sqlMapper.insert("insertAccount", account);
      }
    
      public static void updateAccount (Account account) throws SQLException {
        sqlMapper.update("updateAccount", account);
      }
    
      public static void deleteAccount (int id) throws SQLException {
        sqlMapper.delete("deleteAccount", id);
      }
    }
    

    结论:

    	1、通过数据库和Model对象映射配置文件,将数据库中表与java对象进行关联;
    	2、通过数据库配置文件。里面包括数据库与model对象映射配置文件。保证数据库连接。
    	3、通过DAO进行数据库的增删改查操作。




  • 相关阅读:
    手机开发中的AP与BP的概念
    pk8和x509.pem转换成keystore
    android系统release签名
    java读取pfx或P12格式的个人交换库公私钥
    使用IntelliJ IDEA查看类的继承关系图形
    Java日志框架与日志系统
    Java常见加密技术的密钥与加密串长度
    quartz的持久化任务调度使用应用的dataSource
    敏感数据脱敏
    Jquery的Ajax中contentType和dataType的区别
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5323300.html
Copyright © 2011-2022 走看看