第一种

JDBC工具类 使用Durid连接池
要导入jar包
jdbc工具类如下

package util;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

/**
* JDBC工具类 使用Durid连接池
*/
public class JDBCUtils {

private static DataSource ds ;

static {

try {
//1.加载配置文件
Properties pro = new Properties();
//使用ClassLoader加载配置文件,获取字节输入流
InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
pro.load(is);

//2.初始化连接池对象
ds = DruidDataSourceFactory.createDataSource(pro);

} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 获取连接池对象
*/
public static DataSource getDataSource(){
return ds;
}


/**
* 获取连接Connection对象
*/
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
}

dao层调用

举例

  package cn.itcast.dao;

import cn.itcast.domain.User;
import cn.itcast.util.JDBCUtils;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

/**
* 操作数据库中User表的类
*/
public class UserDao {

//声明JDBCTemplate对象共用
private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

/**
* 登录方法
* @param loginUser 只有用户名和密码
* @return user包含用户全部数据,没有查询到,返回null
*/
public User login(User loginUser){
try {
//1.编写sql
String sql = "select * from user where username = ? and password = ?";
//2.调用query方法
User user = template.queryForObject(sql,
new BeanPropertyRowMapper<User>(User.class),
loginUser.getUsername(), loginUser.getPassword());
return user;
} catch (DataAccessException e) {
e.printStackTrace();//记录日志
return null;
}
}
}

JdbcTemplate实现增删改

使用步骤
1.创建JdbcTemplate对象
2.编写SQL语句
3.使用JdbcTemplate对象的update方法进行增删

//增加用户
@Override
public void add(User user) {
//定义SQL
String sql = "insert into user value(null,?,?,?,?,?,?,null,null)";
//执行SQL
template.update(sql,user.getName( ),user.getGender(),user.getAge(),user.getAddress(),user.getQq(),user.getEmail());
}

//删除用户
@Override
public void delete(int id) {
//定义SQL
String sql = "delete from user where id = ?";
//执行SQL
template.update(sql,id);
}
//更新用户信息
@Override
public Void upate(User user) {
//定义SQL
String sql = "update user set name = ?,gender = ?,age = ?,address = ? ,qq = ?,email =? where id = ?";
//执行SQL
template.update(sql,user.getName(),user.getGender(),user.getAge(),user.getAddress(),user.getQq(),user.getEmail(),user.getId());
return null;
}

JdbcTemplate查询-BeanPropertyRowMapper返回自定义对象

1.定义Usert类
2.创建JdbcTemplate对象
3.编写查询的SQL语句
4.使用JdbcTemplate对象的query方法,并传入BeanPropertyRowMapper对象
5.返回的是List对象

public <T> List<T> query(String sql, RowMapper<T> rowMapper)
@Override
public List<User> findAll() {
//使用jdbc操作数据库
//1定义sql
String sql = "select * from user";
//JdbcTemplate查询-BeanPropertyRowMapper返回User对象
List<User> users = template.query(sql, new BeanPropertyRowMapper<User>(User.class));
return users;
}

JdbcTemplate查询-queryForObject返回指定类型的数据

使用JdbcTemplate对象的queryForObject方法,并传入需要返回的数据的类型
下面返回的是一个User对象,也可以返回其他类型的数据

//通过姓名和密码来查询用户,返回值是用户
public User findUserByUsernameAndPassword(String username, String password) {
try {
String sql = "select * from user where username = ? and password = ?";
User user = template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), username, password);
return user;
} catch (Exception e) {
e.printStackTrace();
return null;
}
//通过id来查询用户
@Override
public User finduserByid(int id) {

String sql = "select * from user where id = ?";
return template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class),id);


}

第二种,,不用连接池

package com.itheima.dao.impl;

import com.itheima.dao.ItemsDao;
import com.itheima.domain.Items;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
* 要想从数据库中取出数据
* 必须有四个属性:数据库驱动,连接数据库的地址,数据库用户名称,数据库密码。
*/
public class ItemsDaoImpl implements ItemsDao {
public List<Items> findAll() throws Exception{
List<Items> list = new ArrayList<Items>();
//先获取contection对象
Connection connection = null;
//获取真正操作数据的对象
PreparedStatement pst = null;
//执行数据库查询操作
ResultSet rs = null;
try {
//加载驱动类
Class.forName("com.mysql.jdbc.Driver");
//先获取contection对象
connection = DriverManager.getConnection("jdbc:mysql:///maven","root", "root");
//获取真正操作数据的对象
pst = connection.prepareCall("select * from items");
//执行数据库查询操作
rs = pst.executeQuery();
//把数据库结果集转成java的List集合

while (rs.next()){
Items items = new Items();
items.setId(rs.getInt("id"));
items.setName(rs.getString("name"));
list.add(items);
}
}catch (Exception e){
e.printStackTrace();
}finally {
connection.close();
pst.close();
rs.close();
}

return list;
}
}