JdbcTemplate的保存和查询方法

实现类代码

package com.imooc.springData.dao.impl;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowCallbackHandler;

import com.imooc.springData.dao.StudentDao;
import com.imooc.springData.entity.Student;

/**
 * @author
 * StudentDao访问接口实现类:通过Spring的jdbcTemplate的方式操作
 */
public class StudentDaoImpl implements StudentDao {
	//注入JdbcTemplate
	private JdbcTemplate jdbcTemplate;
	
	public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}

	public List<Student> query() {
		final List<Student> students = new ArrayList<Student>();
		String sql ="select id, name, age from student ";
		
		jdbcTemplate.query(sql, new RowCallbackHandler(){

			public void processRow(ResultSet rs) throws SQLException {
				Student student = new Student();
				student.setId(rs.getInt("id"));
				student.setName(rs.getString("name"));
				student.setAge(rs.getInt("age"));
				students.add(student);
			}
			
		});
		return students;
	}

	public void save(Student student) {
		String sql ="insert into student(name,age) values(?,?)";
		jdbcTemplate.update(sql, student.getName(),student.getAge());
	}

}
junit进行测试代码

package com.imooc.springData.dao;

import java.util.List;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.imooc.springData.entity.Student;

public class StudentDaoImplTest {
	private ApplicationContext ctx = null;
	private StudentDao studentDao = null;
	@Before
	public void setup(){
		ctx = new ClassPathXmlApplicationContext("beans.xml");
		studentDao = (StudentDao) ctx.getBean("studentDao");
		System.out.println("setup");
	}
	
	@After
	public void tearDown(){
		ctx = null;
		System.out.println("tearDown");
	}
	@Test
	public void testQuery(){
		List<Student> students = studentDao.query();
		
		for(Student student : students){
			System.out.println("id:"+student.getId()
				+" , name:" +student.getName()
				+" , age:" + student.getAge());
		}
	}
	@Test
	public void testSave(){
		Student student = new Student();
		student.setName("test");
		student.setAge(30);
		
		studentDao.save(student);
	}
}


配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation=" http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
	<!-- Spring 数据库连接 -->
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<property name="username" value="root" />
		<property name="password" value="123456" />
		<property name="url" value="jdbc:mysql://127.0.0.1:3306/spring_data" />
	</bean>
	<!-- Spring jdbcTemplate配置 -->
	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource" />
	</bean>
	
	<bean id="studentDao" class="com.imooc.springData.dao.impl.StudentDaoImpl">
		<property name="jdbcTemplate" ref="jdbcTemplate" />
	</bean>
</beans>



一种查询方法

private final String queryHolidaySql="select * from table where type=?";

List<String> holidList=jdbcTemplate.queryForList(queryHolidaySql, String.class, "00A");

一般的修改方法

	String sql = "update table set PASSWORD = ? WHERE ACCOUNT = ? AND PASSWORD = ?";
	res = jdbcTemplate.update(sql, new Object[] { userPwdNew, userAccount, userPwd });

RowMapper的查询方法

String sql = "
					+ "and t1.ACCOUNT = ?  AND t1.PASSWORD = ?";
		List<SysAccount> list = jdbcTemplate.query(sql, new Object[] { account,
				userPwd }, new RowMapper<SysAccount>() {
			List<MenuList> menuList = new ArrayList<MenuList>();
			@Override
			public SysAccount mapRow(ResultSet data, int arg1)
					throws SQLException {
				SysAccount sysAccount = new SysAccount();
				MenuList mList = new MenuList();
				mList.setMenuId(data.getString("MENU_ID"));
				mList.setMenuName(data.getString("MENU_NAME"));
				menuList.add(mList);
				sysAccount.setLoginAccount(data.getString("LOGIN_ACCOUNT"));
				sysAccount.setUserName(data.getString("USER_NAME"));
				sysAccount.setUserRole(data.getString("ROLE_ID"));
				sysAccount.setUserSex(data.getString("USER_SEX"));
				sysAccount.setDeptCode(data.getString("DEPT_CODE"));
				sysAccount.setDeptName(data.getString("DEPARTMENT"));
				sysAccount.setMenuList(menuList);
				return sysAccount;
			}
		});
		if (list.size() > 0) {
			return list.get(0);
		} else {
			return null;
		}

String sql = "SELECT A.USER_ACCT_ID, A.USER_NAME, A.DEPARTMENT, A.DEPT_CODE "
				+ "FROM SYS_ACCOUNT A WHERE A.LOGIN_ACCOUNT=?";
		return jdbcTemplate.queryForObject(sql, new Object[]{userAccount}, new RowMapper<SysUserSession>(){

			@Override
			public SysUserSession mapRow(ResultSet rs, int rowNum) throws SQLException {
				SysUserSession user = new SysUserSession();
				user.setDeptCode(rs.getString("DEPT_CODE"));
				user.setDeptName(rs.getString("DEPARTMENT"));
				user.setAccountId(rs.getString("USER_ACCT_ID"));
				user.setUserName(rs.getString("USER_NAME"));
				return user;
			}
			
		});


public List<BjCasematerial> getCasematerialByCaseno(String caseno) throws Exception {
		String sql = "SELECT CL.MATENAME, CL.TAKETYPE, CL.OPERSIGN, CL.NECESSITY, CL.FILE_ID FROM BJ_CASEMATERIAL CL WHERE CL.CASENO=?";
		return jdbcTemplate.query(sql, new Object[] { caseno }, new RowMapper<BjCasematerial>() {

			@Override
			public BjCasematerial mapRow(ResultSet rs, int rowNum) throws SQLException {
				BjCasematerial bjCasematerial = new BjCasematerial();
				bjCasematerial.setMatename(rs.getString("MATENAME"));
				bjCasematerial.setTaketype(rs.getString("TAKETYPE"));
				bjCasematerial.setMateState(rs.getString("OPERSIGN"));
				bjCasematerial.setNecessity(rs.getString("NECESSITY"));
				bjCasematerial.setFileId(rs.getString("FILE_ID"));
				return bjCasematerial;
			}
		});

修改方法

String updateSql = "UPDATE tableBJ SET SIGN=?,ETIME=?, GN=? "
					+ "RSIGN=? WHERE ID=?";

			return jdbcTemplate.update(updateSql, new PreparedStatementSetter() {

				@Override
				public void setValues(PreparedStatement ps) throws SQLException {
					ps.setString(1, bjCasebaseinfo.getSign());
					ps.setString(2, bjCasebaseinfo.getCaddatetime());
					ps.setLong(3, bjCasebaseinfo.getgn());
					ps.setString(4, bjCasebaseinfo.getOsign());
					ps.setString(5, bjCasebaseinfo.getId());
				}

			});



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在静态方法中使用JdbcTemplate需要注意以下几点: 1. 静态方法中无法直接使用Spring容器中的Bean,因为静态方法是类级别的,而Bean是实例级别的。因此需要手动获取JdbcTemplate实例,可以通过ApplicationContext获取JdbcTemplate实例,或者通过静态变量保存JdbcTemplate实例。 2. 在使用JdbcTemplate时,需要先创建一个JdbcTemplate实例,并设置数据源。数据源可以通过Spring容器注入,或者手动创建。在静态方法中,可以通过静态变量保存JdbcTemplate实例,避免重复创建。 3. 在使用JdbcTemplate操作数据库时,需要注意线程安全问题。JdbcTemplate是线程安全的,但是需要保证JdbcTemplate实例的线程安全,即在多线程环境中需要保证同一JdbcTemplate实例不会被并发访问。 下面是一个示例代码: ``` public class JdbcUtils { private static JdbcTemplate jdbcTemplate; public static void setDataSource(DataSource dataSource) { jdbcTemplate = new JdbcTemplate(dataSource); } public static void executeSql(String sql) { jdbcTemplate.execute(sql); } } ``` 在上面的代码中,我们通过静态变量保存JdbcTemplate实例,并提供了一个静态方法setDataSource用于设置数据源。在使用JdbcTemplate时,我们可以直接调用静态方法executeSql执行SQL语句。需要注意的是,这里的executeSql方法是线程安全的,因为JdbcTemplate实例是共享的,并且JdbcTemplate本身是线程安全的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值