JdbcTemplate实现增删改查
Posted 踏步
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JdbcTemplate实现增删改查相关的知识,希望对你有一定的参考价值。
1、首先,导入相应的包
2、添加数据(其实除了查询其他的操作调用的都是update方法,只是参数有所区别)
@Test void testAdd() { //设置数据源 DriverManagerDataSource dd = new DriverManagerDataSource(); dd.setDriverClassName("com.mysql.jdbc.Driver"); dd.setUrl("jdbc:mysql:///users"); dd.setUsername("root"); dd.setPassword("数据库密码"); //将数据源放入JdbcTemplate中 JdbcTemplate jt = new JdbcTemplate(dd); //编写sql语句 String sql = "insert into myclass values(?,?,?)"; //调用他的update方法 jt.update(sql, "4","xue","7978"); }
3、删除数据
@Test void testDelete() { DriverManagerDataSource dd = new DriverManagerDataSource(); dd.setDriverClassName("com.mysql.jdbc.Driver"); dd.setUrl("jdbc:mysql:///users"); dd.setUsername("root"); dd.setPassword("数据库密码"); JdbcTemplate jt = new JdbcTemplate(dd); String sql = "delete from myclass where id=?"; jt.update(sql, "1"); }
4、修改数据
@Test void testUpdate() { DriverManagerDataSource dd = new DriverManagerDataSource(); dd.setDriverClassName("com.mysql.jdbc.Driver"); dd.setUrl("jdbc:mysql:///users"); dd.setUsername("root"); dd.setPassword("数据库密码"); JdbcTemplate jt = new JdbcTemplate(dd); String sql = "update myclass set name=? where id=?"; jt.update(sql, "smn","3"); }
5、1)查询数据(查询返回某一个值)
@Test void testSelect() { DriverManagerDataSource dd = new DriverManagerDataSource(); dd.setDriverClassName("com.mysql.jdbc.Driver"); dd.setUrl("jdbc:mysql:///users"); dd.setUsername("root"); dd.setPassword("数据库密码"); JdbcTemplate jt = new JdbcTemplate(dd); String sql = "select count(*) from myclass"; int count = jt.queryForObject(sql, Integer.class);//此处返回数据的总数(一个数值) System.out.println(count); }
5、2)查询返回对象
先来一个一般做法
@Test void testjdbc() throws Exception { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; //加载驱动 Class.forName("com.mysql.jdbc.Driver"); //创建连接 conn = DriverManager.getConnection("jdbc:mysql:///users","root","数据库密码"); //编写sql语句 String sql = "select * from myclass where name=?"; //预编译 ps = conn.prepareStatement(sql); //设置参数值 ps.setString(1, "嘻嘻"); //执行sql rs = ps.executeQuery(); //遍历结果集 while(rs!=null) { if(rs.next()) { int id = rs.getInt("id"); int sex = rs.getInt("sex"); user user = new user(); user.setName(id); user.setSex(sex); System.out.println(user); } } rs.close(); ps.close(); conn.close(); ps.close(); }
这是创建的user类
package springjdbc; public class user { private int id; private int sex; public int getName() { return id; } public void setName(int id) { this.id = id; } public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; } @Override public String toString() { return "user [name=" + id + ", sex=" + sex + "]"; } }
再来使用过JdbcTemplate的
@Test void testObject() throws Exception { DriverManagerDataSource dd = new DriverManagerDataSource(); dd.setDriverClassName("com.mysql.jdbc.Driver"); dd.setUrl("jdbc:mysql:///users"); dd.setUsername("root"); dd.setPassword("数据库密码"); String sql = "select * from myclass where name =?"; JdbcTemplate jt = new JdbcTemplate(dd);//jt对Jdbc进行封装 user user = jt.queryForObject(sql, new rowmapper(),"嘻嘻"); System.out.println(user); }
此处调用的是这个方法
其中RowMapper是个接口,需要自己写类实现接口,自己做数据封装
RowMapper实现类如下:
class rowmapper implements RowMapper<user> { @Override public user mapRow(ResultSet rs, int arg1) throws SQLException { // TODO Auto-generated method stub int id = rs.getInt("id"); int sex = rs.getInt("sex"); user user = new user(); user.setName(id); user.setSex(sex); return user; } }
5、3)查询返回List集合
@Test void testList() { DriverManagerDataSource dd = new DriverManagerDataSource(); dd.setDriverClassName("com.mysql.jdbc.Driver"); dd.setUrl("jdbc:mysql:///users"); dd.setUsername("root"); dd.setPassword("数据库密码"); String sql = "select * from myclass"; JdbcTemplate jt = new JdbcTemplate(dd); List<user> list = jt.query(sql, new myrowmapper()); System.out.println(list); }
此处调用的是这个方法
以上的Object... args是个可变参数,即你进行数据库查询时,查询语句中的参数
sql是你写的查询语句
RowMapper的实现类和上面返回对象的实现类一样
以上是关于JdbcTemplate实现增删改查的主要内容,如果未能解决你的问题,请参考以下文章
使用JdbcTemplate操作数据库(增删改查)。具体代码+讲解 上篇