zoukankan      html  css  js  c++  java
  • Spring使用c3p0实现数据增删改查

    一、导入Spring、c3p0、mysql的jar包

    二、配置xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
       <!-- 实例化c3p0对象 -->
        <bean class="com.mchange.v2.c3p0.ComboPooledDataSource" id="dataSource">
            <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
            <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/mydb?characterEncoding=GBK"></property>
            <property name="user" value="root"></property>
            <property name="password" value=""></property>
            
         <!--依次为数据库连接池最小连接数、最大连接数、初始连接数-->
            <property name="minPoolSize" value="3"></property>
            <property name="maxPoolSize" value="15"></property>
            <property name="initialPoolSize" value="3"></property>
    
    
        </bean>
    
      <!-- 配置JDBCTemplate -->
        <bean class="org.springframework.jdbc.core.JdbcTemplate" id="jdbcTemplate">
            <property name="dataSource" ref="dataSource"></property>
        </bean>
    </beans>

    三、编写代码

    Nation类

    package maya.entities;
    
    public class Nation {
        private String code;
        private String name;
        public String getCode() {
            return code;
        }
        public void setCode(String code) {
            this.code = code;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }

    Test类

    package maya.test;
    
    import java.sql.Connection;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.sql.DataSource;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.jdbc.core.BeanPropertyRowMapper;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.core.RowMapper;
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    
    import maya.entities.Nation;
    
    
    public class TestC3P0 {
    //查单行单列 public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); DataSource ds = (DataSource)context.getBean("dataSource"); JdbcTemplate j = (JdbcTemplate)context.getBean("jdbcTemplate"); //查询 String sql = "select count(*) from nation"; long count = j.queryForObject(sql,Long.class); System.out.println(count); }
    //查全部 public static void main8(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); DataSource ds = (DataSource)context.getBean("dataSource"); JdbcTemplate j = (JdbcTemplate)context.getBean("jdbcTemplate"); //查询 String sql = "select * from nation"; RowMapper<Nation> rw = new BeanPropertyRowMapper<Nation>(Nation.class); List<Nation> list = j.query(sql, rw); for (Nation data : list) { System.out.println(data.getName()); } }
    //查单个 public static void main7(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); DataSource ds = (DataSource)context.getBean("dataSource"); JdbcTemplate j = (JdbcTemplate)context.getBean("jdbcTemplate"); //查询 String sql = "select * from nation where code=?"; RowMapper<Nation> rm = new BeanPropertyRowMapper<Nation>(Nation.class); Nation data = j.queryForObject(sql, rm,"n005"); System.out.println(data.getName()); }
    //批量增加 public static void main6(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); DataSource ds = (DataSource)context.getBean("dataSource"); JdbcTemplate j = (JdbcTemplate)context.getBean("jdbcTemplate"); //增加 String sql = "insert into nation values(?,?) "; //使用数组 List<Object[]> batchArgs = new ArrayList<Object[]>(); batchArgs.add(new Object[] {"n005","侗族"}); batchArgs.add(new Object[] {"n006","朝鲜族"}); j.batchUpdate(sql,batchArgs); }
    //删除单个 public static void main5(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); DataSource ds = (DataSource)context.getBean("dataSource"); JdbcTemplate j = (JdbcTemplate)context.getBean("jdbcTemplate"); //删除 String sql = "delete from nation where code=?"; j.update(sql,"n005"); }
    //增加单个 public static void main4(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); DataSource ds = (DataSource)context.getBean("dataSource"); JdbcTemplate j = (JdbcTemplate)context.getBean("jdbcTemplate"); //增加 String sql = "insert into nation value(?,?)"; j.update(sql, "n005", "侗族"); }
    //修改单个 public static void main3(String[] args) { //JdbcTemplate。加载xml文件,创建连接池,建立连接 ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); DataSource ds = (DataSource)context.getBean("dataSource"); JdbcTemplate j = (JdbcTemplate)context.getBean("jdbcTemplate"); //修改 String sql = "update info set name=? where code=?"; j.update(sql, "张琳", "p005");//update方法可以执行insert,update,delete } }

    还可把sql语句写作用于传递外部参数为语句中变量赋值(:=)的方式

    1.配置xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
        <bean class="com.mchange.v2.c3p0.ComboPooledDataSource" id="dataSource">
            <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
            <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/mydb?characterEncoding=GBK"></property>
            <property name="user" value="root"></property>
            <property name="password" value=""></property>
            
            <property name="minPoolSize" value="3"></property>
            <property name="maxPoolSize" value="15"></property>
            <property name="initialPoolSize" value="3"></property>
        </bean>
        <!-- 命名的JDBCTemplate -->
        <bean class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate" id="namedParameterJdbcTemplate">
         <!--方法注入-->
            <constructor-arg ref="dataSource"></constructor-arg>
        </bean>
    </beans>

    2.写代码

    方法一:

    public static void main(String[] args) {
            ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
            DataSource ds = (DataSource)context.getBean("dataSource");
            NamedParameterJdbcTemplate j = (NamedParameterJdbcTemplate)context.getBean("namedParameterJdbcTemplate");
            String sql = "select * from nation where code=:code";
            Map<String, String> paramMap = new HashMap<String,String>();
            paramMap.put("code", "n003");
            RowMapper<Nation> rw = new BeanPropertyRowMapper<Nation>(Nation.class);
            Nation data = j.queryForObject(sql, paramMap, rw);
         //输出查看结果        
         System.out.println(data.getName());
        }

    方法二:

    public static void main(String[] args) throws Exception{
            ComboPooledDataSource ds = new ComboPooledDataSource();
            ds.setDriverClass("com.mysql.jdbc.Driver");
            ds.setJdbcUrl("jdbc:mysql://localhost:3306/mydb?characterEncoding");
            ds.setUser("root");
            ds.setPassword("");
            ds.setMinPoolSize(5);
            ds.setMaxPoolSize(15);
            
            NamedParameterJdbcTemplate j = new NamedParameterJdbcTemplate(ds);
            String sql = "select * from nation where code=:code";
            Map<String, String> paramMap = new HashMap<String,String>();
            paramMap.put("code", "n003");
            RowMapper<Nation> rm = new BeanPropertyRowMapper<Nation>(Nation.class);
            Nation data = j.queryForObject(sql, paramMap, rm);
            System.out.println(data.getName());
        }
  • 相关阅读:
    通过securecrt跳板机登录linux服务器
    python2.x提示这个错误:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position
    使用python requests库写接口自动化测试--记录学习过程中遇到的坑(1)
    linux 中文乱码解决
    工作中常用到的命令
    LR学习文档整理
    Django入门示例之被解放的姜戈——02 庄园疑云(数据库及模型)
    Django入门示例之被解放的姜戈——01 初试天涯(安装及启动)
    格式化字符串format函数
    Python之print 格式化输出
  • 原文地址:https://www.cnblogs.com/jonsnow/p/6640847.html
Copyright © 2011-2022 走看看