java入门作业-DAO,读取sql数据库

news2024/9/23 15:49:40

DAO意思是数据库、访问、对象。有了前后端思想。

需要下载mysql,并下载链接自己设置好密码。可以在navicat等软件链接打开。

材料是jc0122.sql,里面的admin_info是要操作的表。不像上一节需要把数据库文件放到java目录里。数据库只要在本地即可。

 一、简单测试链接读取

要读取admin_info所有的数据,弄一个对象。保证后续输出。

 AdminInfo

package S4.pojo;

import java.util.Date;

public class AdminInfo {
    private Integer adminId;
    private String adminName;
    private String adminPwd;
    private Integer roleId;
    private Integer adminState;
    private Date adminCtime;
    private Date adminMtime;

    public AdminInfo() {
    }

    public AdminInfo(Integer adminId, String adminName, String adminPwd, Integer roleId, Integer adminState, Date adminCtime, Date adminMtime) {
        this.adminId = adminId;
        this.adminName = adminName;
        this.adminPwd = adminPwd;
        this.roleId = roleId;
        this.adminState = adminState;
        this.adminCtime = adminCtime;
        this.adminMtime = adminMtime;
    }

    public Integer getAdminId() {
        return adminId;
    }

    public void setAdminId(Integer adminId) {
        this.adminId = adminId;
    }

    public String getAdminName() {
        return adminName;
    }

    public void setAdminName(String adminName) {
        this.adminName = adminName;
    }

    public String getAdminPwd() {
        return adminPwd;
    }

    public void setAdminPwd(String adminPwd) {
        this.adminPwd = adminPwd;
    }

    public Integer getRoleId() {
        return roleId;
    }

    public void setRoleId(Integer roleId) {
        this.roleId = roleId;
    }

    public Integer getAdminState() {
        return adminState;
    }

    public void setAdminState(Integer adminState) {
        this.adminState = adminState;
    }

    public Date getAdminCtime() {
        return adminCtime;
    }

    public void setAdminCtime(Date adminCtime) {
        this.adminCtime = adminCtime;
    }

    public Date getAdminMtime() {
        return adminMtime;
    }

    public void setAdminMtime(Date adminMtime) {
        this.adminMtime = adminMtime;
    }

    @Override
    public String toString() {
        return "AdminInfo{" +
                "adminId=" + adminId +
                ", adminName='" + adminName + '\'' +
                ", adminPwd='" + adminPwd + '\'' +
                ", roleId=" + roleId +
                ", adminState=" + adminState +
                ", adminCtime=" + adminCtime +
                ", adminMtime=" + adminMtime +
                '}';
    }
}

Test:注意localhost、pwd密码,密码是自己修改的。uri后面的jc0122是.sql文件,可能有许多表格。

package S4.test;

import S4.pojo.AdminInfo;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class Test {
    public static void main(String[] args) {

        try {
            Class.forName("com.mysql.jdbc.Driver");// jdbc驱动
            String uri = "jdbc:mysql://localhost:3306/jc0122?useUnicode=ture&serverTimezone=UTC";
            String userid = "root";
            String pwd = "123456";
            Connection connection = DriverManager.getConnection(uri,userid,pwd);

            System.out.println("connection:"+connection);

            //开始查询
            String sql = "select * from admin_info ";

            PreparedStatement ps = connection.prepareStatement(sql);
            ResultSet set = ps.executeQuery();

            List<AdminInfo> list = new ArrayList<>();
            while (set.next()){

                AdminInfo adminInfo = new AdminInfo();
                //匹配java对象的属性和数据库对象的字段一一对应起来
                adminInfo.setAdminId(set.getInt("admin_id"));
                adminInfo.setAdminName(set.getString("admin_name"));
                adminInfo.setAdminPwd(set.getString("admin_pwd"));
                adminInfo.setAdminCtime(set.getDate("admin_ctime"));
                adminInfo.setAdminMtime(set.getDate("admin_mtime"));
                adminInfo.setAdminState(set.getInt("admin_state"));
                adminInfo.setRoleId(set.getInt("role_id"));

                System.out.println(adminInfo);
                list.add(adminInfo);


            }


            //后面就是展示到UI上面去



        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }


    }
}

如果链接成功,会提示connection,并根据需求读出数据。

 二、根据id、名字读取所有数据;分页查询

 AdminInfo还是上面那个

创建Interface类,AdminDao。按要求声明一下。

package S4.dao;

import S4.pojo.AdminInfo;

import java.util.List;

public interface AdminDao {

    /**
     * 通过账号密码查询admin对象
     * @param name 账号
     * @param pwd 密码
     * @return  admin对象
     */
    AdminInfo selectByNameAndPwd(String name,String pwd);

    /**
     * 分页查询用户
     * @param start 起始数
     * @param limit 条数
     * @return admin对象集合
     */
    List<AdminInfo> selectByPage(Integer start ,Integer limit);

}

AdminDaolmpl中把函数写完整,注意要链接mysql

package S4.dao;

import S4.pojo.AdminInfo;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class AdminDaoImpl implements AdminDao {
    @Override
    public AdminInfo selectByNameAndPwd(String name, String pwd) {
        AdminInfo result = null;

        try {
            Class.forName("com.mysql.jdbc.Driver");// jdbc驱动
            String uri = "jdbc:mysql://localhost:3306/jc0122?useUnicode=ture&serverTimezone=UTC";
            String userid = "root";
            String upwd = "123456";
            Connection connection = DriverManager.getConnection(uri, userid, upwd);

            System.out.println("connection:" + connection);

            //开始查询
            String sql = "SELECT * FROM admin_info WHERE admin_name = ? AND admin_pwd = ?"; //使用?对传入的参数进行占位

            PreparedStatement ps = connection.prepareStatement(sql);
            //参数中 1 表示第一个?  name 表示?对应的值
            ps.setObject(1, name);
            ps.setObject(2, pwd);

            ResultSet set = ps.executeQuery();

            while (set.next()) {

                AdminInfo adminInfo = new AdminInfo();
                //匹配java对象的属性和数据库对象的字段一一对应起来
                adminInfo.setAdminId(set.getInt("admin_id"));
                adminInfo.setAdminName(set.getString("admin_name"));
                adminInfo.setAdminPwd(set.getString("admin_pwd"));
                adminInfo.setAdminCtime(set.getDate("admin_ctime"));
                adminInfo.setAdminMtime(set.getDate("admin_mtime"));
                adminInfo.setAdminState(set.getInt("admin_state"));
                adminInfo.setRoleId(set.getInt("role_id"));

                result = adminInfo;
                break;
            }


            //后面就是展示到UI上面去


        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }


        return result;
    }

    @Override
    public List<AdminInfo> selectByPage(Integer start, Integer limit) {

        try {
            Class.forName("com.mysql.jdbc.Driver");// jdbc驱动
            String uri = "jdbc:mysql://localhost:3306/jc0122?useUnicode=ture&serverTimezone=UTC";
            String userid = "root";
            String pwd = "123456";
            Connection connection = DriverManager.getConnection(uri,userid,pwd);


            //开始查询
            String sql = "select * from admin_info LIMIT ? , ? ";

            PreparedStatement ps = connection.prepareStatement(sql);

            ps.setObject(1,start);
            ps.setObject(2,limit);
            ResultSet set = ps.executeQuery();
            List<AdminInfo> list = new ArrayList<>();
            while (set.next()){

                AdminInfo adminInfo = new AdminInfo();
                //匹配java对象的属性和数据库对象的字段一一对应起来
                adminInfo.setAdminId(set.getInt("admin_id"));
                adminInfo.setAdminName(set.getString("admin_name"));
                adminInfo.setAdminPwd(set.getString("admin_pwd"));
                adminInfo.setAdminCtime(set.getDate("admin_ctime"));
                adminInfo.setAdminMtime(set.getDate("admin_mtime"));
                adminInfo.setAdminState(set.getInt("admin_state"));
                adminInfo.setRoleId(set.getInt("role_id"));

                list.add(adminInfo);


            }


            return list;




        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }



        return null;
    }
}

最后main函数DaoTest

package S4.test;

import S4.dao.AdminDao;
import S4.dao.AdminDaoImpl;
import S4.pojo.AdminInfo;

import java.util.List;

public class DaoTest {

    public static void main(String[] args) {


        AdminDao adminDao = new AdminDaoImpl();  // 接口类new出实现类

        AdminInfo adminInfo = adminDao.selectByNameAndPwd("zhangsan","123456");
        System.out.println(adminInfo);


        List<AdminInfo> list = adminDao.selectByPage(1,10);
        System.out.println(list);

    }
}

 结果是按账号密码输出了张三,按分页查找(注意起始是0,这里是1),输出了李四。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/176504.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅析Spring的五大类注解和方法注解

简单的将bean对象存储到Spring容器中&#xff0c;可以使用五大类注解实现&#xff0c;也可以通过Bean方法注解实现。本文重点围绕这几个问题展开&#xff1a;1.为什么需要五大类注解&#xff1f;2.五大类注解之间有没有关系&#xff1f;3.Spring使用五大类注解生成beanName问题…

Linux常见命令 17 - 帮助命令 man,whatis,--help,info,help

目录 1. 查看命令/配置文件帮助信息 man 2. 查看简短的命令帮助信息 whatis 3. 查看简短的命令选项信息 --help 4. 另一查看命令文件帮助信息 info 5. Shell内置帮助命令 help 1. 查看命令/配置文件帮助信息 man [1] 语法&#xff1a;man [命令] 示例&#xff1a;如果想要查…

分享129个ASP源码,总有一款适合您

ASP源码 分享129个ASP源码&#xff0c;总有一款适合您 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c; 129个ASP源码下载链接&#xff1a;https://pan.baidu.com/s/1dUPOSf1BudsK-bB4FnGXfQ?pwdg3ae 提取码&#x…

黑马2021-8Vue自学笔记hm

黑马2021-8Vue教程学习笔记 文章目录黑马2021-8Vue教程学习笔记代码和笔记不断更新gitee代码仓库地址备用前端gei忽略提交文件webpack的使用初始化包管理配置文件 package.json下载webpack解决问题dependencies 和 devDependencies区别:在项目中配置webpackWebpack 中的默认约定…

python基础——列表推导式

python基础——列表推导式 文章目录python基础——列表推导式一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤一、实验目的 掌握Python数据结构&#xff1a;列表推导式的用法。 二、实验原理 列表推导式&#xff08;list comprehension&#xff09;列表推导式…

【Python百日进阶-Web开发-Linux】Day235 - Win11的WSL2中安装Docker

文章目录一、Docker是什么二、Win11安装Docker2.1 官网下载2.2 系统要求&#x1f517;2.2.1 WSL 2 后端2.2.2 Hyper-V 后端和 Windows 容器2.2.3 关于 Windows 容器2.3 在 Windows 上安装 Docker Desktop2.3.1 交互式安装2.3.2 从命令行安装2.4 启动 Docker 桌面三、WSL2的Ubun…

ConcurrentHashMap的死循环问题

文章目录前言1. 情景复现2. 源码解析3. 代码调试4. 原因5. 解决前言 对于ConcurrentHashMap来说&#xff0c;能保证多线程下的安全问题&#xff0c;但是在JDK1.8中还是会出现一个bug&#xff0c;就是computeIfAbsent&#xff0c;下面就来详细说说死循环的原因 1. 情景复现 首…

进阶C语言 第二章-------《进阶指针》 (指针数组、数组指针、函数指针、回调指针)知识点+基本练习题+深入细节+通俗易懂+完整思维导图+建议收藏

绪论 书接上回&#xff0c;通过对数据类型进阶的认识&#xff0c;你肯定对各种数据类型在内存中如何存储有了了解。虽然说&#xff0c;这方面可能对你的编程能力没什么进步。但是&#xff0c;他是一本内功秘籍&#xff0c;当我们遇到了这方面的问题时我们可以知道可能是哪一方面…

使用 Grafana 请求API接口

目的: 使用Grafana 配合JSON API 插件 请求API接口,完成可视化,实现一些简单的请求功能 假设我们想将如下的API接口返回的json数据可视化 这里借用一下 小熊同学的 金融数据接口 用请求如下接口举例 https://api.doctorxiong.club/v1/fund/detail?code000001&startDat…

色环电容读数方法要点总结

🏡《电子元器件学习目录》 目录 1,概述2,读数方法3,颜色对照表3.1,颜色与电容值数字对照关系表3.2,颜色与10的指数数字对照关系表3.3,颜色与误差对照关系表4,总结1,概述 本文简单介绍色环电容的读数方法。 2,读数方法 如下图所示色环电容共有四个色环。最粗的被命名…

36.Isaac教程--复合消息

复合消息 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 文章目录复合消息测量类型使用复合消息的示例手臂关节速度基本轨迹命令手臂关节和末端执行器命令CompositeMetric 和 CompositeAtlas组件使用 CompositeMetric 计算距离在 Python 脚本中创…

使用bookdown构建新年日记本

简介 一年多前在 B 站发布了一个视频&#xff0c;预览了一下基于 bookdown 构建的日记本。本打算之后更个文字版本教程。结果一直忘了&#xff0c;最近通过一位读者的了解&#xff0c;打算把这个坑补上。 本文内容将展示如何使用 bookdown 模板并修改成自己的日记本。此外&…

某阿里员工提问:年终绩效自己给自己打3.25,会有什么后果?网友回答:必死无疑,不要犯傻!...

年底评绩效&#xff0c;大多数人都会给自己打高绩效&#xff0c;但有些人却反其道而行之。最近&#xff0c;一位阿里员工提出了这样的问题&#xff1a;自评绩效时给自己打3.25&#xff0c;会有什么后果&#xff1f;希望领导能不按常理出牌&#xff0c;给自己3.75。有人问&#…

HashMap1.7中的线程安全问题

文章目录前言正文前言 下面聊聊JDK1.7HashMap的死循环问题&#xff0c;在这之前首先要知道JDK1.7的HashMap底层是数组 链表的形式的 正文 下面给出JDK1.7的扩容代码 //扩容代码 void resize(int newCapacity) {//旧的数组Entry[] oldTable table;//旧的数组长度int oldCap…

SpringBoot+Vue--引入Element-UI创建首页-笔记2

关于Vue项目目录结构介绍 https://tiantian.blog.csdn.net/article/details/128666429?spm1001.2014.3001.5502 先安装引入Element-UI Element - The worlds most popular Vue UI framework i是install的缩写 安装完成后,可以看到package.json里已经引入 在main.js里引入…

linux系统的结构

Linux系统一般有4个主要部分&#xff1a;内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构&#xff0c;它们使得用户可以运行程序、管理文件并使用系统。内核内核是操作系统的核心&#xff0c;具有很多最基本功能&#xff0c;它负责管理系…

Java基础之《netty(31)—用netty实现RPC》

一、需求说明 1、dubbo底层使用了netty作为网络通讯框架&#xff0c;要求使用netty实现一个简单的RPC框架。 2、模仿dubbo&#xff0c;消费者和提供者约定接口和协议&#xff0c;消费者远程调用提供者的服务&#xff0c;提供者返回一个字符串&#xff0c;消费者打印提供者返回…

S32G274A spi发送数组值不变问题

官方例程的spi问题 spi发送函数 下面是S32G两个spi从机发送函数 /** * brief SPI/DSPI异步传输。 * 这个函数使用提供的总线参数初始化异步传输 , 通过外部设备。 * param[in] ExternalDevice -指向传输数据的外部设备的指针 * param[in] TxBuffer -发送缓冲区的指针。 * pa…

3.1动态规划--矩阵连乘问题

写在前面&#xff1a;矩阵连乘的要点 1、最优解数组的含义--A[1:n]的最少数乘次数 2、数组的填写方向--斜着填 3、递推方程含义 今天开始动态规划的学习&#xff0c;动态规划与分治法类似&#xff0c;基本思想就是将待求解的问题分成若干子问题&#xff0c;先求解子问题&am…

Java 23种设计模式(2.创建者模式-工厂设计模式)

代码分析 通过代码的不同实现方式&#xff0c;了解工厂模式 代码分析之后有具体的讲解 1.业务和逻辑分开实现 public class Operation {public static double GetResult(double numberA,double numberB,String operate){double result 0;switch (operate){case "":r…