• 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下的commiciosoftsqlserversqljdbc44.0这整个目录复制到默认的.mRepository下面,神奇的就可以运行了......节操碎了一地有木有....

        加载完了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

     好了,有兴趣的就可以自己试试了.......

  • 相关阅读:
    SQL Server事务、视图和索引
    软件系统的分层开发
    OOP应用:实体类
    Oracle/MySql/SQL Sqlserver分页查询
    数据库连接语句
    SQL连接查询
    MySQL基本手册
    C# 其他
    numpy的loadtxt()用法
    Pytorch从一个输入目录中加载所有的PNG图像,并将它们存储在张量中
  • 原文地址:https://www.cnblogs.com/wangyong/p/spring-mssql.html
Copyright © 2020-2023  润新知