Spring的JDBCTemplate的基本代码操作,这里没用c3p0连接池,用的自带连接池。
2017-03-31 11:28
435 查看
Spring的jdbcTemplate操作
1.Spring 框架一站式框架针对 JavaEE 三层,每一层都有解决技术
在dao层,使用jdbcTemplate
2.Spring 对不同持久化技术的支持
Spring为各种支持的持久化技术,都提供了简单操作的模板和回调。
ORM持久化技术 | 模板类 |
---|---|
JDBC | org.springframework.jdbc.core.JdbcTemplate |
Hibernate5.0 | org.springframework.orm.hibernate5.HibernateTemplate |
IBatis(MyBatis) | org.springframework.orm.ibatis.SqlMapClientTemplate |
JPA | org.springframework.orm.jpa.JpaTemplate |
3.jdbcTemplate 使用和Apache公司的DBUtils使用很相似,都是对数据库进行crud操作。
使用jdbcTemplate时要先导包。这里必须导入spring-tx和jdbcTemplate这两个包,缺一不可,虽然spring-tx是关于事务管理的包,但是里面也有jdbcTemplate对tx的依赖。
下载地址
最后别忘了导入数据库驱动的包
下载地址
jdbcTemplate 依赖连接池(这里用到的不是c3p0连接池)获取数据库连接,所以必须先构造连接池。
下面介绍四个操作:增删改查
增加
@Test public void add() { //因为JDBCTemplate是依赖数据库连接池的,所以先构造连接池 DriverManagerDataSource driverManagerDataSource=new DriverManagerDataSource(); driverManagerDataSource.setDriverClassName("com.mysql.jdbc.Driver"); driverManagerDataSource.setUrl("jdbc:mysql://localhost:3306/template"); driverManagerDataSource.setUsername("root"); driverManagerDataSource.setPassword(""); //创建jdbctemplate对象,设置数据源 JdbcTemplate jdbcTemplate=new JdbcTemplate(driverManagerDataSource); //调用jdbctemplate对象里面的方法实现操作 String sql="insert into user values(?,?)"; int rows=jdbcTemplate.update(sql, "FireLang","123456"); System.out.println(rows); }
注意上面代码中的数据库url是
jdbc:mysql://localhost:3306/template,其实这样写也可以
jdbc:mysql:///template
修改
@Test public void update(){ //因为JDBCTemplate是依赖数据库连接池的,所以先构造连接池 DriverManagerDataSource driverManagerDataSource=new DriverManagerDataSource(); driverManagerDataSource.setDriverClassName("com.mysql.jdbc.Driver"); driverManagerDataSource.setUrl("jdbc:mysql://localhost:3306/template"); driverManagerDataSource.setUsername("root"); driverManagerDataSource.setPassword(""); //创建jdbctemplate对象,设置数据源 JdbcTemplate jdbcTemplate=new JdbcTemplate(driverManagerDataSource); //调用jdbctemplate对象里面的方法实现操作 String sql="update user set password=? where name=?"; int rows=jdbcTemplate.update(sql, "1314520","FireLang"); System.out.println(rows); }
删除
@Test public void delete(){ //因为JDBCTemplate是依赖数据库连接池的,所以先构造连接池 DriverManagerDataSource driverManagerDataSource=new DriverManagerDataSource(); driverManagerDataSource.setDriverClassName("com.mysql.jdbc.Driver"); driverManagerDataSource.setUrl("jdbc:mysql://localhost:3306/template"); driverManagerDataSource.setUsername("root"); driverManagerDataSource.setPassword(""); //创建jdbctemplate对象,设置数据源 JdbcTemplate jdbcTemplate=new JdbcTemplate(driverManagerDataSource); //调用jdbctemplate对象里面的方法实现操作 String sql="delete from user where name=?"; int rows=jdbcTemplate.update(sql, "LangShen"); System.out.println(rows); }
查询
使用jdbcTemplate实现查询操作jdbcTemplate实现查询,有接口RowMapper
jdbcTemplate针对这个接口并没有提供实现类,得到不同的类型数据需要自己进行数据封装
查询单值:
@Test public void showSingleTyepValue(){ //因为JDBCTemplate是依赖数据库连接池的,所以先构造连接池 DriverManagerDataSource driverManagerDataSource=new DriverManagerDataSource(); driverManagerDataSource.setDriverClassName("com.mysql.jdbc.Driver"); driverManagerDataSource.setUrl("jdbc:mysql://localhost:3306/template"); driverManagerDataSource.setUsername("root"); driverManagerDataSource.setPassword(""); //创建jdbctemplate对象,设置数据源 JdbcTemplate jdbcTemplate=new JdbcTemplate(driverManagerDataSource); //调用jdbctemplate对象里面的方法实现操作 String sql="select count(name) from user"; int count=jdbcTemplate.queryForObject(sql, Integer.class); System.out.println(count); }
查询对象:
@Test public void showSingleObject(){ //因为JDBCTemplate是依赖数据库连接池的,所以先构造连接池 DriverManagerDataSource driverManagerDataSource=new DriverManagerDataSource(); driverManagerDataSource.setDriverClassName("com.mysql.jdbc.Driver"); driverManagerDataSource.setUrl("jdbc:mysql://localhost:3306/template"); driverManagerDataSource.setUsername("root"); driverManagerDataSource.setPassword(""); //创建jdbctemplate对象,设置数据源 JdbcTemplate jdbcTemplate=new JdbcTemplate(driverManagerDataSource); //调用jdbctemplate对象里面的方法实现操作 String sql="select * from user where name=?";//这里查询出来的是单个对象。 User temp=jdbcTemplate.queryForObject(sql, new RowMapper<User>(){ @Override public User mapRow(ResultSet result, int num) throws SQLException {//这里的num表示行号,比如我查询出了几个数据,而num代表ResultSet里面的行号。 User user=new User(result.getString("name"), result.getString("password")); return user; } },"FireLang"); System.out.println(temp); }
查询返回List集合
@Test public void showList(){ //因为JDBCTemplate是依赖数据库连接池的,所以先构造连接池 DriverManagerDataSource driverManagerDataSource=new DriverManagerDataSource(); driverManagerDataSource.setDriverClassName("com.mysql.jdbc.Driver"); driverManagerDataSource.setUrl("jdbc:mysql://localhost:3306/template"); driverManagerDataSource.setUsername("root"); driverManagerDataSource.setPassword(""); //创建jdbctemplate对象,设置数据源 JdbcTemplate jdbcTemplate=new JdbcTemplate(driverManagerDataSource); //调用jdbctemplate对象里面的方法实现操作 String sql="select * from user";//查询所有 List<User> templist=jdbcTemplate.query(sql, new RowMapper<User>(){ @Override public User mapRow(ResultSet result, int num) throws SQLException {//这里的num表示行号,比如我查询出了几个数据,而num代表ResultSet里面的行号。 System.out.println("当前行数: "+num); User user=new User(result.getString("name"), result.getString("password")); return user; } }); System.out.println(templist); } /* 输出结果: 当前行数: 0 当前行数: 1 [User [name=FireLang, password=1314520], User [name=LangShen, password=123456]] */
相关文章推荐
- spring中进行连接池使用c3p0进行配置,参考代码
- spring-使用配置文件完成JdbcTemplate操作数据库-c3p0
- Spring通过XML配置c3p0连接池和dao层注解注入使用 jdbcTemplate
- Java框架spring 学习笔记(十六):c3p0连接池的配置以及dao使用jdbcTemplate
- Spring代码实例系列-08:Spring JDBC + DataSource +JdbcTemplate+JdbcDaoSupport的基本实例
- Spring中JdbcTemplate结合连接池(c3p0、dbcp、JdbcDateSupport)及配置properties
- spring-通过JdbcTemplate进行数据库操作-代码实现,无配置文件
- 在Spring中配置C3P0与Proxool连接池
- Spring 结合Hibernate 配置 C3P0 连接池(转)
- 这里是MYSQL操作的C语言代码,我贴几个,你们看吧2222222
- 用Spring对JDBC的操作:JdbcTemplate
- Spring+Hibernate 配置和使用c3p0和proxool连接池
- spring中配置dbcp连接池完整代码
- Spring使用JdbcTemplate操作数据库
- Spring使用JdbcTemplate操作数据库---使用RowMapperResultSetExtractor读数据篇
- spring的事务管理,实际上是将jdbc操作的繁琐代码做成了切面
- Spring使用JdbcTemplate操作数据库---使用RowCallbackHander读数据篇
- Spring使用JdbcTemplate操作数据库---写数据篇
- Spring 测试代码的写法以及一个c3p0的错误
- 这里是MYSQL操作的C语言代码,我贴几个,你们看吧