Java框架学习笔记04 ── Spring( JdbcTemplate)

Akili ·
更新时间:2024-11-15
· 985 次阅读

目录简介使用步骤编写数据库的配置文件配置xml文件使用通用的增删改批量增删改查询返回一个结果查询返回多个结果关于‘?’的使用问题 简介

Spring对JDBC进行了封装,提供了JdbcTemplate类,该类使Spring框架数据抽象层的基类,还有一些更高层次的类继承该类。使用该类要导入几个必须的jar包,分别是spring-jdbc-4.0.0.RELEASE.jar、spring-orm-4.0.0.RELEASE.jar、spring-tx-4.0.0.RELEASE.jar,还需要导入相应的数据库驱动和数据库连接池所需要的jar包。

使用步骤 编写数据库的配置文件

创建一个db.properties文件,用来存储数据库的连接信息。

jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/ssm jdbc.username=root jdbc.password=root 配置xml文件

1.首先加载配置文件

2.配置数据源

3.配置JdbcTemplate的bean

使用 通用的增删改

首先获取JdbcTemplate对象,然后使用update()方法来进行通用的增删改操作。

ApplicationContext ac = new ClassPathXmlApplicationContext("jdbc.xml"); JdbcTemplate jdbcTemplate = ac.getBean("jdbcTemplate",JdbcTemplate.class); @Test public void testUpdate() { String sql = "insert into emp value(null,?,?,?)"; jdbcTemplate.update(sql, "test",21,"男"); String sql1 = "delete from emp where eid = ?"; jdbcTemplate.update(sql1,35); String sql2 = "update emp set ename =? where eid = ?"; jdbcTemplate.update(sql2,"test",34); } 批量增删改

使用batchUpdate方法来进行批量增删改,注意参数是SQL语句和一个List

@Test public void testBatchUpdetr() { String sql = "insert into emp values(null,?,?,?)"; List list = new ArrayList(); list.add(new Object[] {"b1",4,"男"}); list.add(new Object[] {"b2",5,"男"}); list.add(new Object[] {"b3",6,"男"}); jdbcTemplate.batchUpdate(sql, list); String sql1 = "delete from emp where eid = ?"; List list1 = new ArrayList(); list1.add(new Object[] {38}); list1.add(new Object[] {39}); list1.add(new Object[] {40}); jdbcTemplate.batchUpdate(sql1, list1); } 查询返回一个结果

jdbcTemplate.queryForObject(sql, requiredType)用来获取单个的值
jdbcTemplate.queryForObject(sql, rowMapper)用来获取单条数据,将列名(字段名或字段名的别名)与属性名进行映射

@Test public void testQueryForObject() { //jdbcTemplate.queryForObject(sql, requiredType)用来获取单个的值 String sql = "select * from emp where eid = ?"; RowMapper rowMapper = new BeanPropertyRowMapper(Emp.class); Emp emp = jdbcTemplate.queryForObject(sql, new Object[] {44}, rowMapper); System.out.println(emp); //jdbcTemplate.queryForObject(sql, rowMapper)用来获取单条数据 String sql1 = "select count(*) from emp"; Integer count = jdbcTemplate.queryForObject(sql1, Integer.class); System.out.println(count); } 查询返回多个结果

调用query()方法来获得多个结果。

@Test public void testQuery() { String sql = "select eid,ename,age,sex from emp"; RowMapper rowMapper = new BeanPropertyRowMapper(Emp.class); List list = jdbcTemplate.query(sql, rowMapper); for (Emp emp : list) { System.out.println(emp); } } 关于‘?’的使用问题

在JdbcTemplate中,有两个地方的sql语句不能使用?,分别是update批量删除、模糊查询中。
删除:如果想用update来实现批量删除,不能直接"delete from emp where eid in ?";然后再填充?,因为填充进去的会自动加入一对单引号,变成"delete from emp where eid in ‘1,2,3’",使用模糊查询时原理也类似。要想是用update来进行批量删除必须进行下面那样的操作。

String eids = "3,4,5"; String sql = "delete from emp where eid in ("+eids+")"; jdbcTemplate.update(sql);

模糊查询:

String str= "a"; String sqls = "select * from emp where ename like '%?%'";//不能使用 String sqlss = "select * from emp where ename like concat('%', ? ,'%')";//可以使用

今天的内容到此结束,谢谢大家的观看,如有错误请指正,谢谢!CSDN记录成长! 林宪宇 原创文章 17获赞 7访问量 3710 关注 私信 展开阅读全文
作者:林宪宇



java框架 jdbctemplate 学习笔记 JAVA spring 学习

需要 登录 后方可回复, 如果你还没有账号请 注册新账号