Spring JDBC 訪問MSSQL


       在Spring中對底層的JDBC做了淺層的封裝即JdbcTemplate,在訪問數據庫的DAO層完全可以使用JdbcTemplate完成任何數據訪問的操作,接下來我們重點說說Spring JDBC對SQL2005的訪問,首先簡單的看下配置文件,這個不是這次的重點,貼出來看看即可。

<bean id="myDataSource2" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
        <property name="url"
            value="jdbc:sqlserver://localhost:1433;database=sshdb;integratedSecurity=false" />
        <property name="username" value="sa" />
        <property name="password" value="sa" />
</bean>

<!-- mssql JDBC -->
<bean id="mssqlJdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="myDataSource2" />
</bean>


如果大家的項目是有maven管理的,在pox中添加sqljdbc4.jar時會遇到問題,因為在maven 庫中沒有sqljdbc4.jar這個包,需要我們自己進行安裝,下面介紹安裝步驟:

①下載sqljdbc4.jar包,並存放在本地硬盤中,最好路徑中不要包括中文,因為后期還需要用

②開始->運行->cmd,將命令行指向你所放sqljdbc4.jar目錄

③執行以下命令

mvn install:install-file -Dfile=sqljdbc4.jar -Dpackaging=jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0

如果在回車后命令行中出現如下提示(具體的內容路徑可能不同)則說明安裝成功

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-install-plugin:2.3.1:install-file (default-cli) @ standalone-pom ---
[INFO] Installing /Users/claude/installers/JDBC/sqljdbc_4.0/enu/sqljdbc4.jar to /Users/claude/.m2/repository/com/microsoft/sqlserver/sqljdbc4/4.0/sqljdbc4-4.0.jar
[INFO] Installing /var/folders/c6/q1bdtq557kv54783p1g6cbsw0000gp/T/mvninstall1874482299687761721.pom to /Users/claude/.m2/repository/com/microsoft/sqlserver/sqljdbc4/4.0/sqljdbc4-4.0.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.208s
[INFO] Finished at: Tue Mar 13 14:07:31 EDT 2012
[INFO] Final Memory: 3M/81M
[INFO] ------------------------------------------------------------------------

 ④最后,修改pom.xml文件,加入以下代碼

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>sqljdbc4</artifactId>
    <version>4.0</version>
</dependency>

保存並重新install項目,如果沒提示錯誤是最好的,如果提示了錯誤,可能的錯誤信息如下:無法下載sqljdbc4.jar這個包(大致這個意思,具體的錯誤不記得了),我出現這個錯誤的原因猜測是因為maven的localRepository我單獨指定在其他目錄,不是在c盤下的.m目錄下,后來手動將我localRepository下的com\miciosoft\sqlserver\sqljdbc4\4.0這整個目錄復制到默認的.m\Repository下面,神奇的就可以運行了......節操碎了一地有木有....

    加載完了jar包,接下來就是測試是否可以進行數據操作了,一開始的時候測試了一個簡單的程序

    /**
     * mssql jdbcTemplate
     */
    private JdbcTemplate mssqlJdbcTemplate;

    public JdbcTemplate getMssqlJdbcTemplate() {
        return mssqlJdbcTemplate;
    }

    @Resource(name = "mssqlJdbcTemplate")
    public void setMssqlJdbcTemplate(JdbcTemplate mssqlJdbcTemplate) {
        this.mssqlJdbcTemplate = mssqlJdbcTemplate;
    }


    /**
     * MSSQL語句查詢 
     * @param sql
     */
    public void search_MSSQL(String sql) {
        List<Map<String, Object>> result = this.mssqlJdbcTemplate
                .queryForList(sql);
        for (Map<String, Object> map : result) {
            for (String key : map.keySet()) {
                System.out.println("key:" + key);
                System.out.println("value:" + map.get(key));
            }
        }
    }

    在前台調用代碼,測試通過了,這樣,通過spring的jdbcTemplate訪問sql2005也就可以了,接下來補充一下用sql語句編寫分頁查詢,說實話,mssql的分頁查詢比mysql的復雜多了,mysql通過一個關鍵字limit既可以實現的東西,在mssql中要寫一堆代碼,下面看看如何實現吧:首先看看sql語句如果編寫的:

select top 1 o.* from (select row_number() over(order by ID ) as rownumber,* from [user] ) as o where rownumber>0

上面代碼是表示從USER表中查詢出一條記錄,寫的通用一點,如下:(以下分頁查詢只適用於SQL2005及以后版本,SQL2000的分頁查詢利用top完成,不過效率比使用row_number()低)

/**
*recordNum:表示查詢的記錄數量
*orderByColumn:表示排序的字段
*sql:表示前台傳遞過來的查詢語句,在實際使用中這個當然是有業務層傳遞的一個比較復雜的查詢語句,后台DAO中對其進行封裝完成分頁功能
*firstIndex:表示起始的索引
*/
select
top recordNum o.* from (select row_number() over(order by orderByColumn) as rownumber,* from (sql)) as o where rownumber>firstIndex

 好了,有興趣的就可以自己試試了.......


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM