zoukankan      html  css  js  c++  java
  • JdbcTemplate模板在spring中的配置 以及简单的增删改查

    需要用到的包

    方式一

    1、在application.xml中配置了连接池数据源c3p0

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="com.mysql.jdbc.Driver"/>
            <property name="jdbcUrl" value="jdbc:mysql:///demo"/>
            <property name="user" value="root"/>
            <property name="password" value="root"/>
    </bean>

    2、JdbcTemplate模板注入容器,并配置数据源属性

    <bean name="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <property name="dataSource" ref="dataSource"/>
    </bean>

    3、把自己调用的接口注入容器,并配置JdbcTemplate模板属性(xm方法配置属性注意写set)

    <bean name="userDao" class="com.spring.riview.a_jdbcemplate.UserDaoImpl">
            <property name="jt" ref="jdbcTemplate"/>
    </bean

    4、在自己的实现类中书写sql

    package com.spring.riview.a_jdbcemplate;
    
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.List;
    
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.core.RowMapper;
    
    import com.spring.riview.entity.User;
    //JdBc模板实现
    public class UserDaoImpl implements UserDao {
        
        private JdbcTemplate jt;
        
        public void setJt(JdbcTemplate jt) {
            this.jt = jt;
        }
    
        @Override
        public void save(User user) {
            String sql = "insert into t_user values(null,?,?)";
            jt.update(sql, user.getName(),user.getAge());
        }
    
        @Override
        public void delete(Integer id) {
            String sql = "delete from t_user where id=?";
            jt.update(sql, id);
        }
    
        @Override
        public void update(User user) {
            String sql = "update t_user set name=?,age=? where id = ?";
            jt.update(sql, user.getName(),user.getAge(),user.getId());
    
        }
    
        @Override//查找一个封装为对象
        public User getById(Integer id) {
            String sql = "select * from t_user  where id = ?";
            User user = jt.queryForObject(sql, new RowMapper<User>(){
                @Override
                public User mapRow(ResultSet rs, int arg1) throws SQLException {
                    User user =    new User(rs.getInt("id"), rs.getString("name"), rs.getString("age"));
                    return user;
                }},id);
            return user;
        }
    
        @Override//统计个数
        public int getToalCount() {
            String sql = "select count(id) from t_user";
            int num = jt.queryForObject(sql, Integer.class);
            return num;
        }
    
        @Override//查找所有封装为list<User>
        public List<User> list() {
            String sql = "select * from t_user";
            List<User> list = jt.query(sql,  new RowMapper<User>(){
                @Override
                public User mapRow(ResultSet rs, int arg1) throws SQLException {
                    User user =    new User(rs.getInt("id"), rs.getString("name"), rs.getString("age"));
                    return user;
                }});
            return list;
        }
        
    }

    5、在测试(业务)方法中调用

    方式二、

    自己的dao直接注入数据源;父类通过连接池创建模板;

    1、配置数据源(同上)

    2、把自己调用的接口注入容器,并配置数据源属性

    <bean name="userDao" class="com.spring.riview.a_jdbcemplate.UserDaoImpl">
            <property name="dataSource" ref="dataSource"/>
    </bean>

    3、dao实现继承 JdbcDaoSupport 类通过父类创建连接池(而不是用注入的方式)

    import org.springframework.jdbc.core.support.JdbcDaoSupport;
    public
    class UserDaoImpl extends JdbcDaoSupport implements UserDao {

      @Override
      public void save(User user) {
      String sql = "insert into t_user values(null,?,?)";
      super.getJdbcTemplate().update(sql, user.getName(),user.getAge());
    }

    
    }

    方式三

    使用jdbc.properties配置问题读取配置源

    1、书写 jdbc.properties 

    jdbc_url=jdbc:mysql:///demo
    jdbc_username=root
    jdbc_password=root
    jdbc_driver=com.mysql.jdbc.Driver

    2、在application中加载配置文件并使用配置数据(类路径下classpath可省略)

        <!--配置数据源(dataSource)-->
            <!--加载properties文件-->
        <context:property-placeholder location="classpath:jdbc.properties"/>
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${jdbc_driver}"/>
            <property name="jdbcUrl" value="${jdbc_url}"/>
            <property name="user" value="${jdbc_username}"/>
            <property name="password" value="${jdbc_password}"/>
        </bean>
  • 相关阅读:
    关于 flutter_boost Attempt to invoke virtual method ' com.idlefish.flutterboost.FlutterViewContainerManager.getCurrentTopRecord()' on a null object reference
    关于 flutter_boost TextField的autofocus导致页面闪动回弹
    关于 flutter ios打开一个带有百度地图的native页面闪退Modifications to the layout engine must not be performed from a background thread after it has been accessed from the main thread
    关于 flutter_boost demo 隐藏导航栏后push flutter page 右滑返回失效
    关于 flutter 只能用armeabi单架构的问题
    关于数组的length属性
    python 常见问题:导入py文件易忽略问题
    IE浏览器兼容性测试 文档模式,浏览器模式
    关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
    [BS-28] iOS中分页的几种算法
  • 原文地址:https://www.cnblogs.com/404code/p/10607803.html
Copyright © 2011-2022 走看看