jdbcTemplate:
首先连接数据库
<!-- 导入外部文件 --> <context:property-placeholder location="classpath:db.properties"/> <!-- 配置c3p0数据源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${driverClass}"></property> <property name="jdbcUrl" value="${jdbcUrl}"></property> <property name="user" value="${user}"></property> <property name="password" value="${password}"></property> </bean>
外部配置
driverClass=oracle.jdbc.OracleDriver jdbcUrl=jdbc:oracle:thin:@192.168.1.105:1521:orcl user=ems password=123456
注意写URL的时候写本机的IP,写localhost的时候在Oracle数据库中服务的配置要写localhost
在修改
连接测试的代码
public class JDBCTest { private ApplicationContext ctx=null; private JdbcTemplate jdbcTemplate; { ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); jdbcTemplate=(JdbcTemplate) ctx.getBean("jdbcTemplate"); } @Test //测试连接 public void testDataSource() throws SQLException{ DataSource dataSource=ctx.getBean(DataSource.class); System.out.println(dataSource.getConnection()); } }
jdbcTemplate支持的五种方法:
- execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
- update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
- query方法及queryForXXX方法:用于执行查询相关语句;
- call方法:用于执行存储过程、函数相关语句。
在xml中配置jdbcTemplate
<!-- 配置Spring的 jdbcTemplate --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean>
使用:
package com.spring.jdbc; import java.sql.SQLException; import javax.sql.DataSource; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.jdbc.core.JdbcTemplate; public class JDBCTest { private ApplicationContext ctx=null; private JdbcTemplate jdbcTemplate; { ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); jdbcTemplate=(JdbcTemplate) ctx.getBean("jdbcTemplate"); } @Test //测试连接 public void testDataSource() throws SQLException{ DataSource dataSource=ctx.getBean(DataSource.class); System.out.println(dataSource.getConnection()); } @Test public void testUpdate(){ String sql="update employees set last_name=? where id=?"; jdbcTemplate.update(sql, "Jack",2); } }
批量修改:
//批量修改 @Test public void testBatchUpdate(){ String sql="insert into employees(last_name,deptid) values(?,?)"; List<Object[]> batchArgs=new ArrayList<Object[]>(); batchArgs.add(new Object[]{"AA",1}); batchArgs.add(new Object[]{"BB",2}); jdbcTemplate.batchUpdate(sql,batchArgs); }
NamedParameterJdbcTemplate:具名参数,该对象可以使用具名参数
配置bean
<!-- 配置NamedParameterJdbcTemplate 该对象可以使用具名参数,其没有无参数构造器,所以必须为构造器指定参数--> <bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate"> <constructor-arg ref="dataSource"></constructor-arg> </bean>
Java测试:
package com.spring.jdbc; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.sql.DataSource; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; public class JDBCTest { private ApplicationContext ctx=null; private NamedParameterJdbcTemplate namedParameterJdbcTemplate; { ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); namedParameterJdbcTemplate=ctx.getBean(NamedParameterJdbcTemplate.class); } @Test public void testNamedParameterJdbcTemplate(){ String sql="insert into employees(id,last_name,email,deptid) values(:a,:ln,:email,:id)"; Map<String,Object> paramMap=new HashMap<String, Object>(); paramMap.put("a", 3); paramMap.put("ln", "FF"); paramMap.put("email", "[email protected]"); paramMap.put("id", 2); namedParameterJdbcTemplate.update(sql, paramMap); } }改进:public void testNamedParameterJdbcTemplate2(){ String sql="insert into employees(id,last_name,email,deptid) values(:id,:lastname,:email,:deptid)"; Employees employee=new Employees(); employee.setLastName("haha"); employee.setEmail("[email protected]"); employee.setDeptId(5); SqlParameterSource parameterSource=new BeanPropertySqlParameterSource(employee); namedParameterJdbcTemplate.update(sql, parameterSource); }参数名就是对象的 属性。然后直接传入属性。
时间: 2024-10-11 22:05:11