1. 程式人生 > >淺談jdbcTemplate與mybatis

淺談jdbcTemplate與mybatis

root true method per .get utf alibaba void tweene

Spring對數據庫的操作在jdbc上面做了深層次的封裝,也就是工具類 jdbcTemplate

作用:

1: 它提供了AOP式的事務管理

AOP式的事物管理:在以前的事務管理是要融合在邏輯代碼中的,在邏輯代碼中決定事務是否提交或者回滾,這樣很容易造成代碼難以維護,代碼冗余
但是使用spring的聲明式事務後,只需要在數據庫處理方法上註解事務,就可以對操作進行管理,事務的設置和邏輯代碼分開,容易維護。

不修改原有代碼 重新封裝現有的組件 類似於: FileWrite fw = new FileWrite(); PrintWrinter pw = new Prinwriter(fw); 2:spring 提供了統一的異常處理,框架處理了異常。 不論Dao層運用什麽技術實現 出現的錯誤全部封裝成了DatyaAccessException 如何使用 1 引入相應spring jar包 + 數據庫驅動包 2 在spring的主配置文件中配置 jdbcTemplate
<!--
定義template組件 --> <bean id="template" class="org.springframework.jdbc.core.JdbcTemplate"> <!-- 註入連接信息 --> <property name="dataSource" ref="bonecp"> </property> </bean>
定義組件時 template需要一個數據連接池 來管理數據庫連接 數據連接池 有很多種 這裏用的是
com.alibaba.druid.pool.DruidDataSource
<!-- DataSource 數據源 連接池 存儲管理大量的鏈接 流行的 dbcp c3p0,proxool -->
        <!-- 數據源配置, 使用 BoneCP 數據庫連接池 -->
    <bean id="bonecp" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> 
        <!-- 數據源驅動類可不寫,Druid默認會自動根據URL識別DriverClass -->
        <
property name="driverClassName" value="com.mysql.jdbc.Driver" /> <!-- 基本屬性 url、user、password --> <property name="url" value="jdbc:mysql://localhost:3306/medicine?useUnicode=true&amp;characterEncoding=utf-8" /> <property name="username" value="root" /> <property name="password" value="root" /> <!-- 配置獲取連接等待超時的時間 --> <property name="maxWait" value="60000" /> <!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="60000" /> <!-- 配置一個連接在池中最小生存的時間,單位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="300000" /> <property name="testWhileIdle" value="true" /> <property name="testOnBorrow" value="false" /> <property name="testOnReturn" value="false" /> <!-- 配置監控統計攔截的filters --> <property name="filters" value="stat" /> </bean>

下一部是根據表 編寫實體類

技術分享

實體類

package com.mxp.jdbc.entity;

import java.io.Serializable;

public class User implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private String id;
    private String userName;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    
    

}

還需要根據實體類寫一個rowmapper

註意這裏要繼承

org.springframework.jdbc.core.RowMapper,然後重寫maprow方法
package com.mxp.jdbc.entity;

import java.sql.ResultSet;
import java.sql.SQLException;

import org.springframework.jdbc.core.RowMapper;

/** 
 * 每個實體類都有這個封裝組件
 * 將User記錄封裝成 User對象
 * @author Administrator
 *
 */
public class UserRowMapper implements RowMapper<User>{

    /**
     * arg1:第幾行記錄 
     */
    @Override
    public User mapRow(ResultSet arg0, int arg1) throws SQLException {
        User user = new User();
        user.setId(arg0.getString("id"));
        user.setUserName(arg0.getString("user_name"));
        return user;
    }

}

淺談jdbcTemplate與mybatis