【Spring学习笔记】五、使用JDBCTemplate以对象方式操作数据库

9 篇文章 0 订阅
9 篇文章 0 订阅

其主要是继承三个类:SQLFunction SqlUpdate MappingSqlQuery


操作步骤:

1、编写PersonFunction类,继承SqlFunction类并重写PersonFunction带参构造方法,传递参数为DataSource

public class PersonFunction extends SqlFunction {
	public PersonFunction(DataSource ds){
		super(ds,"select count(*) from person");// 计数,返回总共有多少条记录
		compile();//以调用的方法,将父类注入并执行sql语句
	}
}

2、编写PersonUpdate类,继承SqlUpdate类

public class PersonUpdate extends SqlUpdate {
	
	public PersonUpdate(DataSource ds){
		super(ds, "insert into person values(?,?,?)");
		int[] types = {Types.INTEGER,Types.VARCHAR,Types.INTEGER};//必须指定各参数的类型TYPE,利用java.sql.Types类自定义的静态常量定义类型
		setTypes(types);//调用父类的方法void setTypes(int[] types)将类型存放进去
		compile();
	}
}

3、编写PersonQuery类,继承MappingSqlQuery

public class PersonQuery extends MappingSqlQuery {

	public PersonQuery(DataSource ds){
		super(ds,"select * from person");
		compile();
	}

	/*
	* 与Person实体Bean映射
	* 通过将结果集中各个字段的值,赋给Person属性的方式来映射
	*/
	@Override
	protected Object mapRow(ResultSet rs, int rownum) throws SQLException {
	
		Person p = new Person();
		p.setId(rs.getInt("id"));
		p.setName(rs.getString("name"));
		p.setAge(rs.getInt("age"));
			
		return p;//返回对象
	}
}

4、编写接口ObjectPersonDao

public interface ObjectPersonDao {
	
	public List find();

	public void update(Person p);

	public int getCount();

}

5、编写实现类ObjectPersonDaoImpl

public class ObjectPersonDaoImpl implements ObjectPersonDao{

	private SqlFunction sf = null;
	private SqlUpdate su = null;
	private MappingSqlQuery msq = null;
	
	public void setDataSource(DataSource ds){
		sf = new PersonFunction(ds);
		su=new PersonUpdate(ds);
		msq = new PersonQuery(ds);
	}
	
	@Override
	public List find() {
		// TODO Auto-generated method stub
		return msq.execute();
	}

	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return sf.run();
	}

	@Override
	public void update(Person p) {
		// 传入参数
		su.update(new Object[]{p.getId(),p.getName(),p.getAge()});
	}

}

6、编写applicationContext.xml文件(Spring映射文件)

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
	<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
	<value>jdbc:oracle:thin:@localhost:[1521]:adminwyd</value>
</property>
<property name="username">
	<value>scott</value>
</property>
<property name="password">
	<value>tiger</value>
</property>
</bean>
<bean id = "personDao" class="com.spring.jdbc.object.ObjectPersonDaoImpl">
<property name="dataSource" ref="dataSource" />
</bean>

7、编写实现类

/**
 * 1、SqlFunction执行Sql函数
 * 2、SqlUpdate执行插入或者更新
 * 3、MappingSqlQuery执行查询
 * 4、上述三个类都是抽象类,需要继承并能实现
 * @author wyd
 *
 */
public class TestObjectJDBCTemplate {

	public static void main(String[] args) {
		ApplicationContext cpx = new ClassPathXmlApplicationContext("beans.xml");
		ObjectPersonDao opd = (ObjectPersonDao) cpx.getBean("personDao");

		Person person = new Person();
		person.setId(60);
		person.setName("AAA");
		person.setAge(34);
		opd.update(person);

		List<Person> persons = opd.find();
		System.out.println("数据数目:" + opd.getCount());
		for (Iterator it = persons.iterator(); it.hasNext();) {
			Person temp = (Person) it.next();
			System.out.println("姓名:" + temp.getName() + "\t年龄:" + temp.getAge());
		}
	}
}

8、显示运行结果



【P.S.】之前有朋友说,笔记虽然很全,但架不住不知道写哪儿。。。。。。o(╯□╰)o

所以我把源码上传为了资源,有兴趣的朋友可以去下载。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值