zoukankan      html  css  js  c++  java
  • JDBCTemplate使用

    转载请注入原文地址:https://www.cnblogs.com/ygj0930/p/11281055.html

    一:JDBCTemplate简介

      Spring为各种持久化技术提供了简单操作的模板和回调API:

    ORM持久化技术 模板类
    原生JDBC org.springframework.jdbc.core.JdbcTemplate
    Hibernate5.0 org.springframework.orm.hibernate5.HibernateTemplate
    IBatis(MyBatis) org.springframework.orm.ibatis.SqlMapClientTemplate
    JPA org.springfrmaework.orm.jpa.JpaTemplate

      其中,对于原生的JDBC编程,Spring提供了JDBCTemplate,对jdbc操作进行了一系列封装,使得jdbc编程更加简单。

    二:引入jar包或添加依赖

      

      数据库驱动包则按需引入。

    三:创建数据库连接配置文件

    1 jdbc.user=root
    2 jdbc.password=123456
    3 jdbc.driverClass=com.mysql.jdbc.Driver
    4 jdbc.jdbcUrl=jdbc:......

    四:Spring托管

    在Spring配置文件中,注入dataSource,从配置文件中获取内容进行bean的初始化。

    <context:property-placeholder location="classpath:db.properties"/> //指定数据库连接配置文件
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> //托管dataSource bean
        <property name="user" value="${jdbc.user}"></property> //获取配置文件内容对dataSource进行初始化
        <property name="password" value="${jdbc.password}"></property>
        <property name="driverClass" value="${jdbc.driverClass}"></property>
        <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
    </bean>
    
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> //托管jdbcTemplate,引用dataSource
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    五:在代码中使用

      1:通过Spring配置文件启动IOC容器

    //启动IoC容器
    ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");

      2:在IOC容器获取jdbcTemplate实例

    //获取IoC容器中JdbcTemplate实例
    JdbcTemplate jdbcTemplate=(JdbcTemplate) ctx.getBean("jdbcTemplate");

      3:使用jdbcTemplate调用方法执行数据库操作

      JdbcTemplate主要提供以下五大方法:

    • execute方法:可以用于执行任何SQL语句。

    • update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;

    • query方法及queryForXXX方法:用于执行查询相关语句;

    • call方法:用于执行存储过程、函数相关语句。

      3.1)通过 update 进行插入

    String sql="insert into user (name,deptid) values (?,?)";
    int count= jdbcTemplate.update(sql, new Object[]{"caoyc",3});

      3.2)通过 update 进行修改

    String sql="update user set name=?,deptid=? where id=?";
    jdbcTemplate.update(sql,new Object[]{"zhh",5,51});

      3.3)通过 update 进行删除

    String sql="delete from user where id=?";
    jdbcTemplate.update(sql,51);

      3.4)批量插入、修改、删除

    String sql="insert into user (name,deptid) values (?,?)";
    
    List<Object[]> batchArgs=new ArrayList<Object[]>();
    batchArgs.add(new Object[]{"caoyc",6});
    batchArgs.add(new Object[]{"zhh",8});
    batchArgs.add(new Object[]{"cjx",8});
    
    jdbcTemplate.batchUpdate(sql, batchArgs);

    六:在DAO层使用

      数据库操作一般结合ORM进行使用。

      1:首先定义实体类

    package com.proc;
    
    public class User {
        private Integer id;
        private String name;
        private Integer deptid;
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Integer getDeptid() {
            return deptid;
        }
        public void setDeptid(Integer deptid) {
            this.deptid = deptid;
        }
    
        public String toString() {
            return "User [id=" + id + ", name=" + name + ", deptid=" + deptid + "]";
        }
    }

      2:然后定义该实体类的DAO类

    package com.proc;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jdbc.core.BeanPropertyRowMapper;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.core.RowMapper;
    import org.springframework.stereotype.Repository;
    
    @Repository
    public class UserDao {
    
        @Autowired
        private JdbcTemplate jdbcTemplate;
        
        public User get(int id){
            String sql="select id,name,deptid from user where id=?";
            RowMapper<User> rowMapper=new BeanPropertyRowMapper<User>(User.class);
            return jdbcTemplate.queryForObject(sql, rowMapper,id);
        }
    }

      在DAO类中,定义对应实体实例的增删查改操作方法,在方法体中,使用jdbcTemplate。

      3:在service层,通过dao实例调用方法,执行数据操作。

    UserDao userDao=(UserDao) ctx.getBean("userDao");
    System.out.println(userDao.get(53));
  • 相关阅读:
    oracle数据类型
    hive的union,hive连接查询的优化,mapjoin的设置参数
    hive分隔符
    hive load数据到表的方式
    hive的常用命令操作与数据类型以及hive的严格模式
    hadoop fs 与 dfs 的区别
    pl/sql程序语法,存储过程, orcle服务
    mysql连接启动
    HTTP协议
    php6
  • 原文地址:https://www.cnblogs.com/ygj0930/p/11281055.html
Copyright © 2011-2022 走看看