`
wine-god
  • 浏览: 14159 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Spring JDBC模版基本操作示例 (转)

阅读更多
jdbc 模板基本操作的基本步骤:
1 数据库连接,返回全局使用的datasorce;
2 jdbc模板建立,全局使用,依赖database;
3自定义dao,对应一个配置文件(jdbcTemplate 属性 ) 依赖 jdbc模板。
4 控制通过 getBean对像得到jdbcTemplate.

  user表
+-------+-------------+------+-----+---------+----------------+

| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(15)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(15) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+


Insert:

import org.springframework.jdbc.core.support.JdbcDaoSupport;

public class TestDAOjdbc extends JdbcDaoSupport{

String tableName="user";
          String sql = "insert into " + tableName+"(name)"+ "values(?)";

JdbcTemplate jt=getJdbcTemplate();

  jt.update(sql,
                 new PreparedStatementSetter(){
                        public void setValues(PreparedStatement ps) throws SQLException{
                            ps.setString(1,"coco");
                       }
                  }                               
               );     
//删除
    public void deldb(){
        JdbcTemplate jt=getJdbcTemplate();
        String sql="DELETE FROM user WHERE id=?";
        jt.update(sql, new PreparedStatementSetter(){
            public void setValues(PreparedStatement ps)throws SQLException{
                  ps.setInt(1,5);
            }
        });
}

//查询数据库多少行 信息 --使用queryForInt()方法传回user表格中的数据数目
public int getCount(){
    JdbcTemplate jt=getJdbcTemplate();
    String sql="select count(*)from user";
    int count=jt.queryForInt(sql);
    return count;
}
//查询指定名字信息--使用queryForObject()传回一个查询后的结果对象,例如传回一个String对象
public String getName(){
    JdbcTemplate jt=getJdbcTemplate();
    String sql="select name from user where id=10";
    String name=(String)jt.queryForObject(sql, java.lang.String.class);
    return name;
}

//将查询的多项数据信息填写到user Bean中
public List findUser(){
    JdbcTemplate jt=getJdbcTemplate();
    String sql="select * from user";
    List list=jt.queryForList(sql);
    List<user> userlist=new ArrayList<user>();
   
    Iterator it=list.iterator();
    while(it.hasNext()){
        user uinfo=new user();
        Map map=(Map)it.next();
        uinfo.setId((Integer)map.get("id"));
        uinfo.setName((String)map.get("name"));
        userlist.add(uinfo);
    }
    return userlist;
}
//在查询到数据之后先作一些处理再传回,在RowCallback-Handler的processRow()方法中实现简单的ORM动作
//ORM--Object-Relational Mapping
//用new Object[]{id}代替    new PreparedStatementSetter()
public user find(Integer id){
    final user user=new user();
    final int iid=id;
    JdbcTemplate jt=getJdbcTemplate();
    String sql="select * from user where id = ?";
    jt.query(sql,
//            new PreparedStatementSetter(){
//        public void setValues(PreparedStatement ps)throws SQLException{
//            ps.setInt(1, iid);
//}}
            new Object[]{id}
    ,new RowCallbackHandler(){
        public void processRow(ResultSet rs)throws SQLException{
            user.setId(new Integer(rs.getInt("id")));
            user.setName(rs.getString("name"));
        }
    });
    return user;
}


Select:

        String sql = "select * from " + tableName + " where cpermissionid=? and ipproleid=?";

        Object[] values = new Object[] { permissionID,pproleType };

        List list = this.getJdbcTemplate().query(sql, values,

                new BaseRowMapper(M2PpuserPermission.class));

        return (list == null || list.size() == 0 ? null : (M2PpuserPermission) list

                .get(0));


public final class BaseRowMapper implements RowMapper {



    private Class cls;

   

    /**//**

     * @param dao

     */

    public BaseRowMapper(Class cls) {

        this.cls = cls;

    }



    public Object mapRow(ResultSet rs, int row) throws SQLException {

        if (rs != null) {

            return RSUtil.toBean(rs, cls);

        } else {

            return null;

        }

    }

}

批量更新:

        final Object[] propValue = getColumnPropValue(domain);

        final Object[] propName = getColumnPropName();

        String INSERTPROPSQL = "insert into M_COMMON_COLUMN_PROP "

            + " (icolumnid, cpropname, cpropvalue) values(?,?,?)";

        getJdbcTemplate().batchUpdate(INSERTPROPSQL,

                new BatchPreparedStatementSetter() {

                    public int getBatchSize() {

                        return propName.length;

                    }



                    public void setValues(PreparedStatement ps, int i)

                            throws SQLException {

                        ps.setInt(1, id);

                        ps.setString(2,  propName[i].toString());

                        ps.setString(3,  propValue[i].toString());

                    }

                });

Clob/Blob:



/**//**

* @author YunHongTao

*/



public class ExampleSpringLobDao extends JdbcDaoSupport {

   

    /**//**

     * Comment for <code>lobHandler</code>

     * 处理blob、clob字段的对象 提供了方便的处理方法 一定要先初始化

     * 在配置文件可以如下指定

     *     <bean id="nativeJdbcExtractor"

     *             class="org.springframework.jdbc.support.nativejdbc.WebLogicNativeJdbcExtractor" lazy-init="true"/>

     *        <bean id="oracleLobHandler"

     *             class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true">

     *         <property name="nativeJdbcExtractor"><ref local="nativeJdbcExtractor"/></property>

     *       </bean>

     *       <bean id="ExampleSpringLobDao" class="test.ExampleSpringLobDao">    

     *             <property name="dataSource">

     *                 <ref local="dataSource"/>

     *             </property>

     *             <property name="lobHandler">

     *                 <ref bean="oracleLobHandler"/>

     *          </property>

     *         </bean>

     */

    private LobHandler lobHandler;

   



    private String text = "萨克雷发动机三卡领导及罚款司机阿东风口浪尖萨克路灯风纪扣拉萨定界符可滤色镜阿斗罚款滤色镜打伏击送达可分离\n"

            + "萨雷队交锋拉开三角枫框架萨克路风机司克拉风纪扣拉萨定界符可立即撒风口浪尖送达风\n"

            + "口浪尖斯大林咖啡碱四克拉定界符可怜三大件罚款来三大件分厘卡三大件罚款拉萨定界符\n";





    /**//**插入clob字段的方法示例

     * @param id

     * @param name

     * @param text

     * @throws DataAccessException

     */

    public void insertClob(final int id, final String name, final String text)

            throws DataAccessException {

        getJdbcTemplate().execute(

                "INSERT INTO yuntest (id,name,text) VALUES (?, ?, ?)",

                new AbstractLobCreatingPreparedStatementCallback(

                        this.lobHandler) {

                    protected void setValues(PreparedStatement ps,

                            LobCreator lobCreator) throws SQLException {

                        ps.setInt(1, id);

                        ps.setString(2, name);

                        lobCreator.setClobAsString(ps, 3, text);

                    }

                });

    }



    /**//**更新clob字段的方法示例

     * @param name

     * @param text

     * @param id

     * @throws DataAccessException

     */

    public void updateClob(final String name, final String text, final int id)

            throws DataAccessException {

        getJdbcTemplate().execute(

                "UPDATE yuntest set name=?,text=? where id=?",

                new AbstractLobCreatingPreparedStatementCallback(

                        this.lobHandler) {

                    protected void setValues(PreparedStatement ps,

                            LobCreator lobCreator) throws SQLException {

                        ps.setString(1, name);

                        lobCreator.setClobAsString(ps, 2, text);

                        ps.setInt(3, id);



                    }

                });



    }



    /**//**查询clob字段的方法示例

     * @return

     * @throws DataAccessException

     */

    public List getClob() throws DataAccessException {

       

        return getJdbcTemplate().query(

                "SELECT id,name,text FROM yuntest where id=? ",

                new Object[] { new Integer(999999) }, new RowMapper() {

                    public Object mapRow(ResultSet rs, int rowNum)

                            throws SQLException {

                        int id = rs.getInt(1);

                        String name = rs.getString(2);

                        String text = lobHandler.getClobAsString(rs, 3);

                        YunTestBean vo = new YunTestBean();

                        vo.setId(id);

                        vo.setName(name);

                        vo.setText(text);

                        return vo;

                    }

                });

    }



    public void deleteClob() {

        String sql = "delete from yuntest where id = 999999";

        getJdbcTemplate().execute(sql);

    }





    /**//**

     * @return Returns the lobHandler.

     */

    public LobHandler getLobHandler() {

        return lobHandler;

    }



    /**//**

     * @param lobHandler

     *            The lobHandler to set.

     */

    public void setLobHandler(LobHandler lobHandler) {

        this.lobHandler = lobHandler;

    }

}


转至:http://blog.163.com/circle_man/blog/static/5060561020071026863490/
分享到:
评论

相关推荐

    spring jdbc示例代码

    本示例代码将展示如何在Spring环境中使用JDBC进行数据的增删改查操作,并对比它与原生JDBC以及ORM(Object-Relational Mapping)框架如Hibernate或MyBatis的差异。 首先,让我们深入理解Spring JDBC的核心概念: 1...

    springjdbc.zip_SpringJDBC_spring jdbc_spring 增删改查_springjdbc xml

    这个`springjdbc.zip`压缩包很可能包含了示例代码和配置文件,用于演示如何使用Spring JDBC来执行基本的数据库操作,如增、删、改、查。 1. **Spring JDBC模块**:Spring JDBC模块主要由`org.springframework.jdbc`...

    SpringJDBC训练素材.zip

    接下来,JdbcTemplate是Spring JDBC的核心,它提供了执行SQL语句的模板方法,如update()用于执行更新操作,query()用于执行查询操作。使用JdbcTemplate,你可以避免编写大量重复的JDBC模板代码,如关闭连接、处理...

    Spring JDBC应用实例讲解

    JdbcTemplate是Spring JDBC的基础,它提供了模板方法来处理常见的JDBC任务,如执行SQL查询、更新、存储过程等。使用JdbcTemplate可以避免手动管理连接、预编译语句、结果集处理等繁琐工作,从而降低出错的可能性。 ...

    SpringJDBC.rar_jdbc spring_spring jd_spring jdbc_spring使用JDBC进行数

    这个“SpringJDBC.rar”压缩包文件可能包含了关于如何在Spring框架中集成和使用JDBC的相关示例和教程。下面将详细解释Spring JDBC的核心概念、功能以及使用方法。 首先,Spring JDBC的核心目标是简化传统的JDBC编程...

    Spring JDBC实现代码

    Spring JDBC提供了一个JdbcTemplate类,它是对JDBC API的抽象,它通过模板方法减少了重复的JDBC代码,如打开和关闭连接、处理结果集等。JdbcTemplate提供了各种方法,如update()用于执行SQL更新,query()用于查询...

    maven-springMVC-springJDBC-Demo

    【标题】"maven-springMVC-springJDBC-Demo"是一个综合性的项目示例,它演示了如何使用Maven、Spring MVC和Spring JDBC在Java Web开发中构建一个简单的应用。这个Demo旨在帮助开发者理解这三大技术的集成与协同工作...

    Spring JDBC 增删改查

    在这个主题下,我们将深入探讨Spring JDBC的核心概念、配置、以及如何进行基本的数据库交互。 一、Spring JDBC概述 Spring JDBC通过JdbcTemplate和NamedParameterJdbcTemplate两个核心类,简化了传统JDBC的代码,...

    java开发之SpringMVC + Spring + SpringJDBC整合.zip

    同时,还可以参考网络资源,如“史上最全最强SpringMVC详细示例实战教程”和“SpringMVC + Spring + SpringJDBC整合”的文档,学习如何创建基于Maven的Web项目,以及如何在IDEA中添加和管理jar包。 总之,SpringMVC...

    SpringMVC3 + SpringJDBC整合 源码。

    SpringJDBC是Spring框架的一部分,它简化了传统的JDBC编程模型,通过提供模板方法和回调机制,使得数据库操作更加容易。SpringJDBC提供了一层抽象,可以避免大量重复的JDBC代码,如打开和关闭连接、处理结果集等,使...

    Spring Data JDBC与JDBC的区别

    1. **自动配置**: Spring Boot通过自动配置,可以快速设置数据源和JDBC模板。 2. **Repository接口**: 开发者只需定义Repository接口,Spring会自动提供实现,无需编写繁琐的DAO层代码。 3. **ORM支持**: 尽管不如...

    Spring_jdbc模板相关jar包(连接文件版本:5.1.47)

    首先,Spring JDBC模板是Spring框架中的一个核心组件,它为开发者提供了一种简化JDBC操作的方式。传统的JDBC编程涉及大量的样板代码,如打开和关闭数据库连接、创建和执行SQL语句等,而Spring JDBC模板通过抽象这些...

    SpringJDBC入门Demo

    在本文中,我们将深入探讨Spring JDBC的核心概念、基本操作以及其在实际应用中的优势。 1. **Spring JDBC概述** Spring JDBC是Spring对Java数据库连接(JDBC)API的封装,旨在减少编写传统JDBC代码的繁琐过程,...

    springJdbcDemo11_java_springjdbc_

    在这个"springJdbcDemo11_java_springjdbc_"项目中,我们将深入探讨Spring集成JDBC的基本概念、配置和核心组件,以及如何通过实例快速上手并理解其工作原理。 1. **Spring JDBC简介** Spring JDBC模块是为了简化...

    spring3+springMVC3+springJDBC3+jQuery easyui的运行环境

    本示例提供的"spring3+springMVC3+springJDBC3+jQuery easyui"就是一个经典组合,适用于开发高效、可维护的后端服务和用户友好的前端界面。让我们逐一深入探讨这些技术的细节。 首先,Spring框架(版本3)是Java...

    Spring jdbc的codesmith模版

    标签“源码”和“工具”表明这篇博文可能涉及到具体的代码示例和Codesmith模板的配置,以及如何利用这个工具来生成Spring JDBC相关的源代码。 从压缩包内的文件名称来看,这些文件都是Codesmith的模板文件,它们有...

    spring 整合JDBC 原创代码

    在压缩包中的"复件 SpringJDBC"文件可能包含一个简单的Spring整合JDBC的示例。代码可能包括了配置文件、实体类、DAO接口和其实现。例如,创建一个UserDao接口,使用JdbcTemplate进行用户查询: ```java public ...

    SpringMVC + Spring + SpringJDBC整合demo

    3. **Service层**:业务逻辑处理,如`UserService.java`,可能包含了对数据库的操作,通过SpringJDBC的模板方法执行SQL。 4. **DAO层**:数据库访问对象,如`UserDAO.java`,通常包含JdbcTemplate或...

    SpringJdbc.rar

    `JdbcTemplate`是Spring JDBC的核心类,它通过模板方法模式简化了常见的JDBC操作,如查询、更新、插入和删除数据。`SimpleJdbcInsert`和`SimpleJdbcCall`则分别用于简化插入操作和调用存储过程。 集成Spring JDBC的...

    spring jdbc mysql example

    本示例将深入探讨如何使用Spring JDBC与MySQL数据库进行集成和操作。以下是相关的关键知识点: 1. **Spring JDBC模块**: Spring JDBC是Spring框架中的一个核心模块,它为Java数据库连接(JDBC)提供了一种更高级别...

Global site tag (gtag.js) - Google Analytics