java"> @TestpublicvoidupdateDataByJdbcTemplate(){ApplicationContext ioc =newClassPathXmlApplicationContext("JdbcTemplate_ioc.xml");JdbcTemplatejdbcTemplate = ioc.getBean(JdbcTemplate.class);String sql ="update monster set skill = ? where id = ?";int update =jdbcTemplate.update(sql,"美女",100);System.out.println("修改成功,受影响的行数为"+ update);}
2.结果展示
4.查询
1.查询单条记录queryForObject
java"> //查询单条记录@TestpublicvoidqueryForObject(){ApplicationContext ioc =newClassPathXmlApplicationContext("JdbcTemplate_ioc.xml");JdbcTemplatejdbcTemplate = ioc.getBean(JdbcTemplate.class);//<T> T queryForObject(String var1, RowMapper<T> var2, @Nullable Object... var3);//接受一个sql, 一个RowMapper接口,一个可变参数, 将结果封装到对象中//注意这里表的列名和bean对象是不对应的,所以需要指定别名String sql ="select id as monsterId, name, skill from monster where id = ?";//使用BeanPropertyRowMapper来封装一条记录//注意:这里后面还要传入Monster.classBeanPropertyRowMapper<Monster> rowMapper =newBeanPropertyRowMapper<>(Monster.class);Monster monster =jdbcTemplate.queryForObject(sql, rowMapper,100);System.out.println(monster);}
注意事项
bean对象的名字需要跟数据表中的列对应,如果不同需要数据表指定列名
bean对象需要有无参构造方法用于反射
new BeanPropertyRowMapper<>(Monster.class)这里传入Monster.class用于反射
结果展示
2.查询多条记录query
java"> //查询多条记录@Testpublicvoidquery(){ApplicationContext ioc =newClassPathXmlApplicationContext("JdbcTemplate_ioc.xml");JdbcTemplatejdbcTemplate = ioc.getBean(JdbcTemplate.class);//public <T> List<T> query(String sql, RowMapper<T> rowMapper, @Nullable Object... args)//接受一个sql, 一个RowMapper接口,一个可变参数, 将结果封装到集合中//注意这里表的列名和bean对象是不对应的,所以需要指定别名String sql ="select id as monsterId, name, skill from monster where id > ?";//使用BeanPropertyRowMapper接口来封装多条记录BeanPropertyRowMapper<Monster> rowMapper =newBeanPropertyRowMapper<>(Monster.class);List<Monster> query =jdbcTemplate.query(sql, rowMapper,100);for(Monster monster : query){System.out.println(monster);}}
结果展示
3.查询一行一列记录queryForObject
java"> //查询单行单列数据@TestpublicvoidqueryForObject_(){ApplicationContext ioc =newClassPathXmlApplicationContext("JdbcTemplate_ioc.xml");JdbcTemplatejdbcTemplate = ioc.getBean(JdbcTemplate.class);//public <T> T queryForObject(String sql, Class<T> requiredType, @Nullable Object... args)//传入sql语句, 要返回的类型, 以及参数String sql ="select count(*) from monster where id > ?";String res =jdbcTemplate.queryForObject(sql,String.class,1);System.out.println(res);}
结果展示
4.查询一行一列的记录(常用)
java"> publicDoublefindPriceById(Integer goods_id){String sql ="select price from goods where goods_id = ?";//public <T> T queryForObject(String sql, @Nullable Object[] args, Class<T> requiredType)//传入sql, Object[]填充sql的值,Class<T> requiredType传入要返回的类型Double aDouble =jdbcTemplate.queryForObject(sql,newObject[]{goods_id},Double.class);return aDouble;}