JDBC模板和命名参数模板.ppt_第1页
JDBC模板和命名参数模板.ppt_第2页
JDBC模板和命名参数模板.ppt_第3页
JDBC模板和命名参数模板.ppt_第4页
JDBC模板和命名参数模板.ppt_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JDBC模板和命名参数模板,Spring中对于JDBC的支持,DriverManagerDataSource接口设定数据源 FileSystemXmlApplicationContext来获取数据源 JDBC的XML配置,DriverManagerDataSource,DriverManagerDataSource ds = new DriverManagerDataSource(); ds.setDriverClassName(com.microsoft.jdbc.sqlserver.SQLServerDriver); ds.setUrl(jdbc:microsoft:sqlserver:/

2、127.0.0.1:1433;DatabaseName=jdbcsql); ds.setUsername(sa); ds.setPassword(789654); Connection conn = ds.getConnection();,Spring中对于JDBC的支持, ,获取数据源,获取DataSource的初始化代码: ApplicationContext context = new FileSystemXmlApplicationContext(“bean.xml”); DataSource datasource = (DataSource)context.getBean(“data

3、source”); /从数据源中获取连接 Connection conn = datasource.getConnection();,目标,Spring之JdbcTemplate操作 JdbcTemplate简介 update(String sql,Object obj); query(String sql,Object obj,RowMapper rowMapper) queryForObject(String sql,Object obj,RowMapper rowMapper) queryForInt(String sql,Object obj) queryForMap(String s

4、ql,Object obj) Spring之NamedParameterJdbcTemplate操作 NamedParameterJdbcTemplate简介 Update(String sql, SqlParameterSource ps) Update(String sql, Map paramMap) getJdbcOperations().query(String sql, RowMapper rowMapper) query(String sql, SqlParameterSource ps,RowMapper rowMapper); queryForObject(String sq

5、l, SqlParameterSource ps,RowMapper rowMapper) queryForObject(String sql, SqlParameterSource ps,Class RequiredType),JdbcTmeplate简介,JdbcTemplate是core包的核心类。它替我们完成了资源的创建以及释放工作,从而简化了我们对JDBC的使用。它还可以帮助我们避免一些常见的错误,比如忘记关闭数据库连接。JdbcTemplate将完成JDBC核心处理流程,比如SQL语句的创建、执行,而把SQL语句的生成以及查询结果的提取工作留给我们的应用代码。它可以完成SQL查询、

6、更新以及调用存储过程,可以对ResultSet进行遍历并加以提取。它还可以捕获JDBC异常并将其转换成org.springframework.dao包中定义的,通用的,信息更丰富的异常。,update,/ 所有添,删,改的方法都可以用jdbctemp.update()方法 public void addStu(Stu stu) String sql = insert into stu values(?,?,?); Object obj = new Object stu.getSname(), stu.getSsex(),new java.sql.Date(stu.getSbrith().get

7、Time() ; /可以传两个参数,第一个参数是SQL语句,第二个参数是SQL语句的参数值 jdbctemp.update(sql, obj); ,query,/查询方式1 public List getAllStu(int id) String sql=select s_id,s_name,s_sex,s_brith from stu where s_id?; Object obj=new Objectid; /使用内部类 List list=jdbctemp.query(sql,obj,new RowMapper() public Object mapRow(ResultSet arg0,

8、 int arg1) throws SQLException Stu stu=new Stu(); if(arg0!=null) stu.setSid(arg0.getInt(s_id); stu.setSname(arg0.getString(s_name); stu.setSsex(arg0.getString(s_sex); stu.setSbrith(arg0.getDate(s_brith); return stu; ); return list; ,queryForObject,/查询方式2 (查询一个对象) public Stu getOneStu(int id) String

9、sql=select s_id as sid,s_name as sname,s_sex as ssex,s_brith as sbrith from stu where s_id=?; Object obj=new Objectid; Object stu=jdbctemp.queryForObject(sql, obj,new BeanPropertyRowMapper(Stu.class); /可以不用内部类,但是类的属性字段名称要数据库中的字段名称一样或者数据库字段名为s_id类的名称为SId, /如果你没有遵守这个规范则可以在select语句后面给数据库字段名取别名 /上面的查询也可

10、以这种方式 return (Stu)stu; ,queryForObject,/查询方式3(查询一个字段) public String getStuName(int sid) String sql=select s_name as sname from stu where s_id=?; Object obj=new Objectsid; Object stuname=jdbctemp.queryForObject(sql, obj, String.class); /String.class即是指明一下结果的类型 return (String) stuname; ,queryForInt,/查

11、询方法4 public int count() String sql=select count(*) from stu; int m=jdbctemp.queryForInt(sql); return m; ,queryForMap,/查询方法5 查询结果返回的是map,map中的key为select中的列名(若有别名是是别名)value是该列所对应的值 public Map getStuinMap(int sid) String sql=select s_id as sid,s_name as sname,s_sex as ssex,s_brith as sbrith from stu wh

12、ere s_id=?; Object obj=new Objectsid; return jdbctemp.queryForMap(sql, obj); ,NamedParameterJdbcTemplate简介,NamedParameterJdbcTemplate内部包含了一个JdbcTemplate,所以JdbcTemplate能做的事情NamedParameterJdbcTemplate都能干,NamedParameterJdbcTemplate相对于JdbcTemplate主要增加了参数可以命名的功能。 public Object queryForObject(String sql,

13、Map paramMap, RowMapper rowMapper) public Object queryForObject(String sql, SqlParameterSource paramSource, RowMapper rowMapper) SqlParameterSource的两个主要实现: 1.MapSqlParameterSource和 2.BeanPropertySqlParameterSource NamedParameterJdbcTemplate提供了命名参数,用:x代替了? * NamedParameterJdbcTemplate传参数可以用map或者SqlPa

14、rameterSource * 用map的好处是:x,x的值可以自由取,但是所有参数的值都必须要放到map中去,其中的key为:后面的名称,value是你传的值 * 用SqlParameterSource的好处是不用一个个的赋值,但是:x中的x的值必须和对象的属性名称一样,Update,public void updStu(Stu stu) String sql=update stu set s_name=:sname,s_sex=:ssex,s_brith=:sbrith where s_id=:sid; SqlParameterSource ps=new BeanPropertySqlPa

15、rameterSource(stu); namedjdbctemp.update(sql, ps); public void delStu(int sid) String sql=delete stu where s_id=:id; Map map=new HashMap(); map.put(id, sid); namedjdbctemp.update(sql, map); ,getJdbcOperations().query,public List getAllStu() String sql=select s_id as sid,s_name as sname,s_sex as ssex

16、,s_brith as sbrith from stu; List list=namedjdbctemp.getJdbcOperations().query(sql,new BeanPropertyRowMapper(Stu.class); return list; ,query,public List getAllStu(Stu stu) String sql=select s_id as sid,s_name as sname,s_sex as ssex,s_brith as sbrith from stu where s_id=:sid; SqlParameterSource ps=ne

17、w BeanPropertySqlParameterSource(stu); return namedjdbctemp.query(sql, ps, new BeanPropertyRowMapper(Stu.class); ,queryForObject,public Stu getOneStu(Stu stu) String sql=select s_id as sid,s_name as sname,s_sex as ssex,s_brith as sbrith from stu where s_id=:sid; SqlParameterSource ps=new BeanPropertySqlParameterSource(stu); return (Stu)namedjdbctemp.queryForObject(sql,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论