JdbcTemplate实现CRUD操作

来源:互联网 发布:英语学霸软件 编辑:程序博客网 时间:2024/05/22 16:38

------------------siwuxie095

  

  

  

  

  

  

  

  

  

JdbcTemplate 实现 CRUD 操作

  

  

1JdbcTemplate 是 Spring 的 JDBC 模板,对 JDBC 进行了封装

  

  

  

  

2、Spring 对不同持久化技术的支持如下:

  

ORM 持久化技术

模板类

JDBC

JdbcTemplate

Hibernate

HibernateTemplate

iBatis

SqlMapClientTemplate

MyBatis

SqlSessionTemplate

JPA

JpaTemplate

  

  

Spring 为各种持久化技术都提供了模板类,对它们进行封装

以简化编程

  

参考链接:

  

http://blog.csdn.net/u011225629/article/details/47143177

  

  

  

  

3、导入jar 包(共9 个包)

  

1)导入核心 jar 包和日志相关的 jar 包

  

  

  

2)导入JdbcTemplate 的 jar 包

  

  

  

3)导入MySQL 的 JDBC 驱动包

  

  

  

mysql-connector-java下载链接:

  

https://dev.mysql.com/downloads/connector/j/

  

  

  

  

4、具体步骤

  

1设置数据库连接信息

  

2)创建 JdbcTemplate 对象,设置数据源

  

3调用 JdbcTemplate 对象的方法实现 CRUD 操作

  

  

  

  

5、在MySQL 中手动创建数据库和表

  

数据库名:spring_db,表名:user,字段:username、password

  

  

  

  

  

6、具体实现

  

1)添加操作

  

AddDemo.java:

  

package com.siwuxie095.jdbc;

  

import org.junit.Test;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.jdbc.datasource.DriverManagerDataSource;

  

  

/**

*添加操作

*/

public class AddDemo {

  

/**

*手动加上 @Test以进行单元测试(将自动导入 JUnit 4 jar包)

*

*选中方法名,右键->Run As->JUint Test

*/

@Test

publicvoid add() {

 

//设置数据库连接信息

DriverManagerDataSource dataSource=new DriverManagerDataSource();

dataSource.setDriverClassName("com.mysql.jdbc.Driver");

//或使用 jdbc:mysql:///spring_db代替,省略 localhost:3306

dataSource.setUrl("jdbc:mysql://localhost:3306/spring_db");

dataSource.setUsername("root");

dataSource.setPassword("8888");

 

 

//创建 JdbcTemplate对象,设置数据源

JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);

 

 

//使用 jdbcTemplate的方法实现添加操作

//

//创建 sql语句

String sql="insert into user values(?,?)";

 

//调用 update()方法实现添加,返回值是 int型,

//创建以接收,表示在数据库中影响的行数

int row=jdbcTemplate.update(sql,"小明","1234");

System.out.println(row);

}

 

}

  

  

  

2)修改操作

  

UpdateDemo.java:

  

package com.siwuxie095.jdbc;

  

import org.junit.Test;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.jdbc.datasource.DriverManagerDataSource;

  

  

/**

*修改操作

*/

public class UpdateDemo {

  

@Test

publicvoid update() {

 

//设置数据库连接信息

DriverManagerDataSource dataSource=new DriverManagerDataSource();

dataSource.setDriverClassName("com.mysql.jdbc.Driver");

//或使用 jdbc:mysql:///spring_db代替,省略 localhost:3306

dataSource.setUrl("jdbc:mysql://localhost:3306/spring_db");

dataSource.setUsername("root");

dataSource.setPassword("8888");

 

 

//创建 JdbcTemplate对象,设置数据源

JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);

 

 

//使用 jdbcTemplate的方法实现修改操作

//

//创建 sql语句

String sql="update user set password=? where username=?";

 

//调用 update()方法实现修改,返回值是 int型,

//创建以接收,表示在数据库中影响的行数

int row=jdbcTemplate.update(sql,"1314","小明");

System.out.println(row);

}

 

}

  

  

  

3)删除操作

  

DeleteDemo.java:

  

package com.siwuxie095.jdbc;

  

import org.junit.Test;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.jdbc.datasource.DriverManagerDataSource;

  

  

/**

*删除操作

*/

public class DeleteDemo {

  

@Test

publicvoid delete() {

 

//设置数据库连接信息

DriverManagerDataSource dataSource=new DriverManagerDataSource();

dataSource.setDriverClassName("com.mysql.jdbc.Driver");

//或使用 jdbc:mysql:///spring_db代替,省略 localhost:3306

dataSource.setUrl("jdbc:mysql://localhost:3306/spring_db");

dataSource.setUsername("root");

dataSource.setPassword("8888");

 

 

//创建 JdbcTemplate对象,设置数据源

JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);

 

 

//使用 jdbcTemplate的方法实现删除操作

//

//创建 sql语句

String sql="delete from user where username=?";

 

//调用 update()方法实现删除,返回值是 int型,

//创建以接收,表示在数据库中影响的行数

int row=jdbcTemplate.update(sql,"小明");

System.out.println(row);

}

 

}

  

  

  

4)查询操作

  

QueryDemo.java:

  

package com.siwuxie095.jdbc;

  

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.List;

  

import org.junit.Test;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.jdbc.core.RowMapper;

import org.springframework.jdbc.datasource.DriverManagerDataSource;

  

  

  

/**

*查询操作

*

* JdbcTemplate通过接口 RowMapper实现查询,但

* JdbcTemplate没有提供该接口的实现类,所以,要

*得到不同类型的数据,需要自己进行封装

*

*查询操作分为三类:

*

* (1)查询,返回一个值

* (2)查询,返回一个对象

* (3)查询,返回一个 List集合

*

*/

public class QueryDemo {

  

/**

* (1)查询,返回一个值

*/

@Test

publicvoid queryValue() {

 

//设置数据库连接信息

DriverManagerDataSource dataSource=new DriverManagerDataSource();

dataSource.setDriverClassName("com.mysql.jdbc.Driver");

//或使用 jdbc:mysql:///spring_db代替,省略 localhost:3306

dataSource.setUrl("jdbc:mysql://localhost:3306/spring_db");

dataSource.setUsername("root");

dataSource.setPassword("8888");

 

 

//创建 JdbcTemplate对象,设置数据源

JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);

 

 

//使用 jdbcTemplate的方法得到记录数

//

//创建 sql语句

String sql="select count(*) from user";

 

//调用 queryForObject()方法,传入 sql语句和返回类型的 class

int count=jdbcTemplate.queryForObject(sql, Integer.class);

System.out.println(count);

}

 

 

/**

* (2)查询,返回一个对象

*/

@Test

publicvoid queryObject() {

 

//设置数据库连接信息

DriverManagerDataSource dataSource=new DriverManagerDataSource();

dataSource.setDriverClassName("com.mysql.jdbc.Driver");

//或使用 jdbc:mysql:///spring_db代替,省略 localhost:3306

dataSource.setUrl("jdbc:mysql://localhost:3306/spring_db");

dataSource.setUsername("root");

dataSource.setPassword("8888");

 

 

//创建 JdbcTemplate对象,设置数据源

JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);

 

 

//使用 jdbcTemplate的方法得到对象

//

//创建 sql语句

String sql="select * from user where username=?";

 

//调用 queryForObject()方法,传入 sql语句、

//接口 RowMapper的实现类的对象、要查询的值

User user=jdbcTemplate.queryForObject(sql,new MyRowMapper(), "小明");

System.out.println(user);

}

 

 

/**

* (3)查询,返回一个 List集合

*/

@Test

publicvoid queryList() {

 

//设置数据库连接信息

DriverManagerDataSource dataSource=new DriverManagerDataSource();

dataSource.setDriverClassName("com.mysql.jdbc.Driver");

//或使用 jdbc:mysql:///spring_db代替,省略 localhost:3306

dataSource.setUrl("jdbc:mysql://localhost:3306/spring_db");

dataSource.setUsername("root");

dataSource.setPassword("8888");

 

 

//创建 JdbcTemplate对象,设置数据源

JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);

 

 

//使用 jdbcTemplate的方法得到 List集合

//

//创建 sql语句

String sql="select * from user";

 

//调用 query()方法,传入 sql语句

//和接口 RowMapper的实现类的对象

List<User> list=jdbcTemplate.query(sql,new MyRowMapper());

System.out.println(list);

}

 

}

  

  

//多个类,在同一个文件中,最多有一个是 public权限的

class MyRowMapperimplements RowMapper<User> {

  

@Override

public User mapRow(ResultSet rs,int rowNum) throws SQLException {

 

//从结果集中拿数据,并封装到对象中

String username=rs.getString("username");

String password=rs.getString("password");

 

User user=new User();

user.setUsername(username);

user.setPassword(password);

 

return user;

}

  

}

  

  

  

User.java:

  

package com.siwuxie095.jdbc;

  

public class User {

  

private String username;

private String password;

 

public String getUsername() {

return username;

}

publicvoid setUsername(String username) {

this.username = username;

}

 

public String getPassword() {

return password;

}

publicvoid setPassword(String password) {

this.password = password;

}

 

@Override

public String toString() {

return"User [username=" + username +", password=" + password + "]";

}

 

}

  

  

  

  

  

  

  

  

  

  

【made by siwuxie095】