zoukankan      html  css  js  c++  java
  • spring整合JDBC

    1.工具类

    ·JdbcTemplate封装常用JDBC方法

    ·HibernateTemplate封装常用Hibernate方法

    ·JdbcDaoSupport一JDBC数据访问对象的基类

    ·HibernateDaoSupport一Hibernate数据访问对象的基类

    JdbcTemplate:直接使用sql语句操作数据库,效率很高,但是编码量大!

             封装了操作数据库的各种方法,该类包含一个dataSource属性(数据源),

             只有在初始化数据源的情况下才能调用JdbcTemplate的方法。

    xml文件配置:使用JdbcTemplate前,要先创建数据源对象

    1 <bean id="template" class="org.springframework.jdbc.core.JdbcTemplate">
    2         <property name="dataSource" ref="dataSource"></property>
    3     </bean>

    2.阿里巴巴Druid数据库连接池

    官方说明文档:

    https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

    properties文件配置基本信息:

     1 username=root 2 password=123123 3 url=jdbc:mysql://localhost:3306/utf8?useUnicode=true&characterEncoding=utf-8 4 driver=com.mysql.jdbc.Driver 

    xml文件配置:

     1 <!-- 读取连接配置信息 -->
     2     <util:properties id="props" location="classpath:db.properties"></util:properties>
     3     
     4     <!-- 设置连接池配置 -->
     5     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
     6         <!-- 基本连接信息 -->
     7         <property name="url" value="#{props.url}"></property>
     8         <property name="username" value="#{props.username}"></property>
     9         <property name="password" value="#{props.password}"></property>
    10         <property name="driverClassName" value="#{props.driver}"></property>
    11         <!-- 配置初始化连接大小 最小连接数   最大连接数 -->
    12         <property name="initialSize" value="1"></property>
    13         <property name="minIdle" value="1"></property>
    14         <property name="maxActive" value="20"></property>
    15         <!-- 获取连接的等待超时时间 毫秒单位 -->
    16         <property name="maxWait" value="60000"></property>
    17         <!-- 隔多久进行一次检测  检测需要关闭的连接 -->
    18         <property name="timeBetweenEvictionRunsMillis" value="60000"></property>
    19         <!-- 配置一个连接在连接池最小生存时间 -->
    20         <property name="minEvictableIdleTimeMillis" value="300000"></property>
    21     </bean>
    22     <!-- 设置JdbcTemplate -->
    23     <bean id="template" class="org.springframework.jdbc.core.JdbcTemplate">
    24         <!-- 设置template的数据源对象 -->
    25         <property name="dataSource" ref="dataSource"></property>
    26     </bean>
    27     <!-- 开启注解扫描 -->
    28     <context:component-scan base-package="com.rong.web"></context:component-scan>

    3.spring集成jdbc

    依赖包:druid-1.0.31、spring-jdbc-4.2.8、spring-tx-4.2.8

    * 号会导致数据库生成执行语句计划的时候,先通过一条sql查询查询出该表有哪些字段信息,然后再替换*号,效率下降

    代码操作:template需要在xml配置文件中注入一个dataSource属性

        update方法包括增删改操作

        /**实现RowMapper接口的类重写的方法中的参数含义:

       * ResultSet rs, int rowNum

       * rs:结果集对象

      * rowNum:遍历的结果集的第几条数据

       */

     1 package com.web.dao;
     2 
     3 import java.util.List;
     4 
     5 import javax.annotation.Resource;
     6 
     7 import org.springframework.jdbc.core.JdbcTemplate;
     8 import org.springframework.stereotype.Repository;
     9 
    10 import com.web.entity.User;
    11 import com.web.entity.UserMapper;
    12 @Repository
    13 public class UserDaoImpl implements UserDao {
    14     @Resource
    15     JdbcTemplate template;
    16 
    17     @Override
    18     public List<User> findAll() {
          
    19 String sql="select id,username,password from user"; 20 List<User> list = template.query(sql, new UserMapper()); 21 return list; 22 } 23 24 @Override 25 public User findById(Integer id) { 26 String sql="select id,username,password from user where id=?"; 27 Object[] objs=new Object[]{id}; 28 User user = template.queryForObject(sql, new UserMapper(), objs); 29 return user; 30 } 31 32 @Override 33 public void update(User user) { 34 String sql="update user set username=?,password=? where id=?"; 35 Object[] objs=new Object[]{user.getUsername(),user.getPassword(),user.getId()}; 36 int num = template.update(sql, objs); 37 if(num>0){ 38 System.out.println("更改成功!"); 39 }else{ 40 System.out.println("更改失败!"); 41 } 42 43 } 44 45 @Override 46 public void delete(Integer id) { 47 String sql="delete from user where id=?"; 48 Object[] objs=new Object[]{id}; 49 int num = template.update(sql, objs); 50 if(num>0){ 51 System.out.println("删除成功!"); 52 }else{ 53 System.out.println("删除失败!"); 54 } 55 56 } 57 58 @Override 59 public void add(User user) { 60 String sql="insert into user values(?,?,?)"; 61 Object[] objs=new Object[]{user.getId(),user.getUsername(),user.getPassword()}; 62 int num = template.update(sql, objs); 63 if(num>0){ 64 System.out.println("添加成功!"); 65 }else{ 66 System.out.println("添加失败!"); 67 } 68 69 } 70 71 }
     1 package com.web.entity;
     2 
     3 import java.sql.ResultSet;
     4 import java.sql.SQLException;
     5 
     6 import org.springframework.jdbc.core.RowMapper;
     7 
     8 public class UserMapper implements RowMapper<User>{
     9 
    10     @Override
    11     public User mapRow(ResultSet rs, int rowNum) throws SQLException {
    12         User user=new User(rs.getInt("id"), rs.getString("username"), rs.getString("password"));
    13         return user;
    14     }
    15 
    16 }
  • 相关阅读:
    典型相关性分析(刷题)
    轻音少女美图分享
    动漫美景
    linux下安装redis(全操作)
    前端限制对后端的请求频率
    idea自定义java方法的注释模板
    sql 语句,判断某个值在某个字段中是否存在,存在返回1,不存在返回0
    Error: Module not specified
    解决sql语句中DISTINCT和order by的冲突
    将后端传来的数据放入ul中
  • 原文地址:https://www.cnblogs.com/57rongjielong/p/7806134.html
Copyright © 2011-2022 走看看