在开始编码前,我们需要先给IDEA设置下面两个jar文件:

第一步:我们先进行数据库的毗连
- public class DBUtils {
- /**
- * 打开数据库
- */
- //优化:让加载器等操作,只做一次
- public static String driver;//驱动地址
- public static String url;//数据库的地址
- public static String user;//数据库账户
- public static String password;//数据库密码
- static {
- //先用ReadFileUtils.readFile()获取properties文件中的信息
- Properties properties = ReadFileUtils.readFile("web/com/file/db.properties");
- //将获取的信息,填入对应的方式
- driver = properties.getProperty("driver");//连接驱动
- url = properties.getProperty("url");//链接数据库
- user = properties.getProperty("user");//输入数据库的账户
- password = properties.getProperty("password");//输入数据库的密码
- try {
- Class.forName(driver);//创建数据库驱动
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- }
- public static Connection getConnection(){
- //创建一个空的连接
- Connection conn = null;
- try {
- conn = DriverManager.getConnection(url,user,password);//连接数据库
- } catch (SQLException e) {
- e.printStackTrace();
- }
- return conn;//返回数据库的连接地址
- }
- /**
- * 关闭数据库
- * @param conn
- * @param ps
- * @param rs
- */
- public static void closeAll(Connection conn, PreparedStatement ps, ResultSet rs){
- //判断rs中是否有数据库返回地址
- if(rs!=null){
- try {
- rs.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- //判断ps中有没有数据库命令
- if(ps!=null){
- try {
- ps.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- //判断conn中是否有数据库连接地址
- if(conn!=null){
- try {
- conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- }
复制代码 使用加载器ClasssLoader进行properties文件的信息读取
- package web.com.utils;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.Properties;
- public class ReadFileUtils {
- public static Properties readFile(String path){
- //普通Java类利用自身类的类加载器读取外部文件
- InputStream in = ReadFileUtils.class.getClassLoader().getResourceAsStream(path);
- Properties properties = new Properties();
- try {
- properties.load(in);
- } catch (IOException e) {
- e.printStackTrace();
- }
- return properties;
- }
- }
复制代码 properties文件
- driver=com.mysql.jdbc.Driver
- url=jdbc:mysql://localhost:3306/test?
- user=root
- password=root
复制代码
在Javaweb工程中,我们要经常进行测试,由于没有主函数,所以我们要使用junit.jar工具进行测试,测试函数不能有返回值。
进行数据库毗连测试
- /**
- * 测试连接数据库
- */
- @Test
- public void test01(){
- Connection connection = DBUtils.getConnection();
- System.out.println(connection);
- }
复制代码 第二步:进行查询方法的实现
- /**
- * 根据用户名查询用户是否存
- * @param username
- * @return
- */
- @Override
- public boolean findUserByUsername(String username) {
- Connection conn = null;//创建一个装数据库连接地址的函数
- PreparedStatement ps = null;//创建一个装数据库命令的函数
- ResultSet rs = null;//创建一个装数据库返回地址的函数
- boolean flag = false;//定义一个逻辑函数,boolean函数,来输出数据库命令运行结果
- conn = DBUtils.getConnection();//生成一个数据库连接地址
- String sql = "select id from user where username=?";//数据库命令
- try {
- //将数据库命令装进ps函数中
- ps = conn.prepareStatement(sql);
- //给数据库命令写入你输入的值
- ps.setString(1,username);
- //执行数据库命令,成功返回数据库返回地址
- rs = ps.executeQuery();
- System.out.println(rs);
- //判断rs是否有值
- while (rs.next()){
- //给逻辑函数附true,表示数据库命令执行成功
- flag = true;
- break;
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- //关闭数据库
- DBUtils.closeAll(conn,ps,rs);
- //返回值为逻辑函数,表示是否执行成功
- return flag;
- }
复制代码 测试查询方法是否正确
- /**
- * 测试查询用户是否存在
- */
- @Test
- public void test02(){
- UserDaoImpl userDao = new UserDaoImpl();
- //执行查询,返回值是逻辑值,false假,true真
- boolean flag = userDao.findUserByUsername("xiao");
- System.out.println("false执行失败,true执行成功");
- System.out.println(flag);
- }
复制代码 第三步:进行添加方法的代码实现
- /**
- * 增加用户
- * @param user
- * @return
- */
- @Override
- public int addUser(User user) {
- Connection conn = null;//创建一个装数据库连接地址的函数
- PreparedStatement ps = null;//创建一个装数据库命令的函数
- int i = 0;
- conn = DBUtils.getConnection();//生成一个数据库连接地址
- //数据库命令
- String sql = "INSERT INTO USER(username,PASSWORD,gender,age,birthday,address,hobby,remark) VALUES(?,?,?,?,?,?,?,?)";
- try {
- //将数据库命令装进ps函数中
- ps = conn.prepareStatement(sql);
- //给数据库命令写入你输入的值
- ps.setString(1,user.getUsername());
- ps.setString(2,user.getPassword());
- ps.setString(3,user.getGender());
- ps.setInt(4,user.getAge());
- //处理日期时间类型问题
- Date birthday = user.getBirthday();
- java.sql.Date date = new java.sql.Date(birthday.getTime());
- ps.setDate(5,date);
- ps.setString(6,user.getAddress());
- ps.setString(7,user.getHobby());
- ps.setString(8,user.getRemark());
- //执行数据库命令,返回执行成功数
- i = ps.executeUpdate();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- //关闭数据库
- DBUtils.closeAll(conn,ps,null);
- //返回整形函数i
- return i;
- }
复制代码 测试添加方法是否正确
- /**
- * 测试添加用户
- */
- @Test
- public void test03(){
- UserDaoImpl userDao = new UserDaoImpl();
- //输入要添加的信息
- User user = new User("wang","123",18,new Date(),"男","成都","篮球,足球","666 ");
- //执行添加命令
- int i = userDao.addUser(user);
- if(i>0){
- System.out.println("添加用户成功1");
- }else{
- System.out.println("添加用户失败1");
- }
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |