第一步:导入mysql 的jar包和Spring的jar包
链接:https://pan.baidu.com/s/1G4IyVtl4YgWAa9pmHAn-lQ
提取码:yg3o
要创建一个JDBC工具类
这里用阿里连接池来写JDBC工具类
- 阿里连接池druid的配置文件
druid.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/zang?useUnicode=true&characterEncoding=utf8
username=root
password=root
initialSize=5
maxActive=10
maxWait=3000 - 编写JDBC工具类
public class JdbcUtilsDruid2 {
private static DataSource ds;
private JdbcUtilsDruid2(){
}
static {
Properties properties = new Properties();
InputStream resourceAsStream = JdbcUtilsDruid2.class.getClassLoader().getResourceAsStream("druid.properties");
try {
properties.load(resourceAsStream);
ds = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
public static DataSource getDateSource(){
return ds;
}
}
- 使用JdbcTemplate对象操作sql语句,从而操作数据库
- 创建JdbcTemplate对象,依赖于DataSource数据源
- 调用JdbcTemplate的方法来完成CURD的操作
*update(sql):执行DML语句,增删改语句,update也可以传入从键盘输入的处理值。
*queryForMap():查询结果将结果封装为map集合,将表的列名作为key
,将值作为value把记录封装为一个map集合,查询长度只能是一条数据,
*queryForList():查询结果将结果封装为list集合,可以查询多条数据
注意:这是将每一条记录封装为一个Map集合,再将map集合装载到List集合里面去
*query():查询结果,将结果封装为一个JavaBean(实体类)对象,如Sutndent 类,Teacher类
query的参数:RowMapper
* 一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
* new BeanPropertyRowMapper<类型>(类型.class)
*queryForObject:查询结果,将结果封装为对象,一般用于聚合函数的查询
示例:
public class UserDao2 {
JdbcTemplate jdbcTemplate = new JdbcTemplate(JdbcUtilsDruid2.getDateSource());
Scanner scanner = new Scanner(System.in);
//删除一条数据
public void delete(){
String sql = "delete from student where id = ?";
System.out.println("请输入要删除的id");
int id = scanner.nextInt();
int update = jdbcTemplate.update(sql, id);
if(update>0){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
}
//修改一条数据
public void update(){
String sql = "update student set password = ? where name = ?";
System.out.println("请输入要名字");
String name = scanner.next();
System.out.println("请输入要修改的密码");
String password = scanner.next();
int update = jdbcTemplate.update(sql, password,name);
if(update>0){
System.out.println("修改成功!");
}
}
//添加一条数据
public void add(){
String sql = "insert into student(id,name,password)values(?,?,?)";
System.out.println("请输入id");
int id = scanner.nextInt();
System.out.println("请输入要添加名字");
String name = scanner.next();
System.out.println("请输入要添加密码");
String password = scanner.next();
int update = jdbcTemplate.update(sql,id,name,password);
if(update>0){
System.out.println("添加成功!");
}
}
//查询一条数据
public void search(){
String sql = "select count(*) from student";
Integer integer = jdbcTemplate.queryForObject(sql, Integer.class);
if(integer>0){
System.out.println("数据库中总共有"+integer+"条记录");
System.out.println("查询成功!!!");
}
}
public User login(User user){
String sql = "select * from student where name = ? and password = ?";
User user1 = null;
try {
user1 = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), user.getName(), user.getPassword());
} catch (DataAccessException e) {
return null;
}
return user1;
}
}