《Spring编程技术与应用》课件4.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《Spring编程技术与应用》课件4.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Spring编程技术与应用 Spring 编程 技术 应用 课件
- 资源描述:
-
1、4.1.1 连接数据库Spring的的JDBC抽象框架提供了一系列接口和类实现对数据源的连接。抽象框架提供了一系列接口和类实现对数据源的连接。DataSourceUtils类:提供从类:提供从JNDI获取连接获取连接.p 方法方法getDataSourceFromJndi用以针对那些不使用用以针对那些不使用BeanFactory或者或者ApplicationContext的应用。的应用。p 通过通过DataSourceUtils.getConnection(DataSource)可取得可取得JDBC连接。连接。SmartDataSource接口:提供与关系数据库的连接,它继承接口:提供与关系数
2、据库的连接,它继承javax.sql.DataSource接口,它在数据库操作后可智能决定是否需要接口,它在数据库操作后可智能决定是否需要关闭连接。对于需要重用一个连接的应用可提高效率。关闭连接。对于需要重用一个连接的应用可提高效率。DriverManagerDataSource类:实现类:实现SmartDataSource接口,通接口,通过过bean的属性配置完成的属性配置完成JDBC驱动,并每次都返回一个新的连接。驱动,并每次都返回一个新的连接。(1)连接Access数据库的配置(2)基于属性文件连接Mysql数据库的配置 4.1.2 数据源的注入package chapter4;impo
3、rt org.springframework.jdbc.core.JdbcTemplate;public class UserDaoImpl implements UserDao private JdbcTemplate jdbcTemplate;public JdbcTemplate getJdbcTemplate()return jdbcTemplate;public void setJdbcTemplate(JdbcTemplate jdbcTemplate)this.jdbcTemplate=jdbcTemplate;/其他业务逻辑方法其他业务逻辑方法3.配置文件(beans.xml)
4、bean id=dataSource .数据源数据源 .编程中也可以采用非注入方式来设置数据源管理对象编程中也可以采用非注入方式来设置数据源管理对象以下程序中直接通过对象的以下程序中直接通过对象的setter方法实现数据源的设置。方法实现数据源的设置。DriverManagerDataSource dataSource=new DriverManagerDataSource();dataSource.setDriverClassName(sun.jdbc.odbc.JdbcOdbcDriver);dataSource.setUrl(jdbc:odbc:xx);/假设假设xx为为ODBC数据源数
5、据源 UserDao userDAO=new UserDao();userDAO.setJdbcTemplate(new JdbcTemplate(dataSource);4.1.3 使用JdbcTemplate查询数据库1使用使用queryForList方法将多行记录存储到方法将多行记录存储到列表中列表中String sql=SELECT*FROM 栏目栏目;ListMap x=jdbcTemplate.queryForList(sql);要访问第要访问第1行的栏目标题可以用行的栏目标题可以用x.get(0).get(title)。2.通过query方法执行SQL语句,对多行查询结果进行对象
6、封装-(1)使用RowMapper数据记录映射接口通过回调通过回调RowMapper接口的接口的mapRow方法可处理结果集的每行。并且每行处理后方法可处理结果集的每行。并且每行处理后可返回一个对象,所有行返回的对象形成对象列表集合。可返回一个对象,所有行返回的对象形成对象列表集合。public List getAll()List rows=jdbcTemplate.query(“SELECT*FROM 栏栏目目”,new RowMapper()public Column mapRow(ResultSet rs,int rowNum)throws SQLException Column m=n
7、ew Column();/创建栏目对象创建栏目对象 m.setTitle(rs.getString(“title”);/根据获取记录字段值设置栏根据获取记录字段值设置栏目属性目属性m.setNumber(rs.getInt(“id”);return m;/返回一行的处理结果返回一行的处理结果 );return rows;/所有行的处理结果所有行的处理结果(2)使用RowCallbackHandler数据记录回调管理器接口RowCallbackHandler接口定义的接口定义的processRow方法将对结果集的每行分别进行处方法将对结果集的每行分别进行处理,但方法无返回值。理,但方法无返回值。
8、public static List getName(String table)String sql=select distinct name from +table;final List result=new List();/存放结果存放结果jdbcTemplate.query(sql,new RowCallbackHandler()public void processRow(ResultSet rs)throws SQLExceptionresult.add(rs.getString(name);/加入结果集加入结果集 );return result;3.返回单值结果的查询方法 有一些查
9、询方法用来执行返回单个值。例如:有一些查询方法用来执行返回单个值。例如:queryForInt,queryForLong或者或者queryForObject。public boolean logincheck(String loginname,String pass)String sql=Select count(*)from user where loginname=+loginname+and password=+pass+;return jdbcTemplate.queryForInt(sql)0;queryForObject方法queryForObject方法将会把返回的方法将会把返回
10、的JDBC类型转换成最后一个参数所指定的类型转换成最后一个参数所指定的Java类。如果类型转换无效,那么将会抛出类。如果类型转换无效,那么将会抛出InvalidDataAccessApiUsageException异常。如果无查询结果,会抛出异常。如果无查询结果,会抛出EmptyResultDataAccessException异常。例如:异常。例如:String name=(String)jdbcTemplate.queryForObject(SELECT name FROM USER WHERE user_id=?,new Object“123”,String.class);/带填充参数情
11、形带填充参数情形 如果不含如果不含SQL填充参数,可以用如下形式:填充参数,可以用如下形式:String name=(String)jdbcTemplate.queryForObject(SELECT name FROM USER WHERE user_id=123,String.class);实际上,实际上,queryForInt(sql)可用可用queryForObject(sql,Integer.class)来代替。来代替。4.1.4 使用JdbcTemplate更新数据库1.完整完整SQL命令串的执行处理命令串的执行处理如果如果SQL拼写完整,则可采用只有一个拼写完整,则可采用只有一个
12、SQL命命令串参数的令串参数的update方法或方法或execute方法。方法。String sql=INSERT INTO 栏目栏目(title)+VALUES(+title1+);jdbcTemplate.execute(sql);2.带填充参数的SQL语句的执行处理(1)通过参数数组填充通过参数数组填充SQL语句中的内容语句中的内容String sql=insert into user values(?,?,?,?,10);Object params=new Object loginname,password,emailAddress,username ;jdbcTemplate.upd
展开阅读全文