JDBC练习

x33g5p2x  于2022-02-17 转载在 其他  
字(6.3k)|赞(0)|评价(0)|浏览(308)

完成商品品牌数据的增删改查操作

查询:查询所有数据

添加:添加品牌

修改:根据id修改

删除:根据id删除

准备环境:

数据库表tb-brand

实体类Brand

测试用例

 表的信息

drop table if exists tb_brand;
-- 创建tb_brand表
create table tb_brand
( 
	-- id 主键 
	id 	int primary key auto_increment, 
	-- 品牌名称
	brand_name varchar(20), 
	-- 企业名称
	company_name varchar(20), 
  -- 排序字段
	ordered int, 
	-- 描述信息
	description varchar(100), 
    -- 状态:0:禁用1启用
	`status` int 
)
character set utf8;
-- 添加数据 
insert into tb_brand (brand_name, company_name, ordered, description, `status`)
values ('三只松鼠','三只松鼠股份有限公司',5,'好吃不上火',0), 
('华为','华为技术有限公司',100,'华为致力于把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界',1),
('小米','小米科技有限公司', 50,'are you ok', 1);
SELECT * FROM tb_brand;

整列编辑:alt+鼠标左键

快捷生成方法:alt+insert

1、查询所有 

在pojo包下创建一个类(pojo就是用来存放对象的Brand):

package com.pojo;

public class Brand {
    // id 主键
    private Integer id;
    // 品牌名称
    private String brand_name;
    // 企业名称
    private String company_name;
    // 排序字段
    private Integer ordered;
    // 描述信息
    private String description;
    // 状态:0:禁用1启用
    private Integer status;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getBrand_name() {
        return brand_name;
    }

    public void setBrand_name(String brand_name) {
        this.brand_name = brand_name;
    }

    public String getCompany_name() {
        return company_name;
    }

    public void setCompany_name(String company_name) {
        this.company_name = company_name;
    }

    public Integer getOrdered() {
        return ordered;
    }

    public void setOrdered(Integer ordered) {
        this.ordered = ordered;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    @Override
    public String toString() {
        return "Brand{" +
                "id=" + id +
                ", brand_name='" + brand_name + '\'' +
                ", company_name='" + company_name + '\'' +
                ", ordered='" + ordered + '\'' +
                ", description='" + description + '\'' +
                ", status=" + status +
                '}'+"\n";
    }
}

因为status是状态0或1,如果我们弄int类型,默认值是0,而用Integer包装类默认值则是null,符合我们的要求

新建一个example创建一个BrandText类

package com.example;

import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.pojo.Brand;
import org.junit.Test;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

/**
 * 品牌数据的增删改查
 */
public class BrandText {
    /**
     * 查询所有的
     * 1、SQL:select*from tb_brand
     * 2、参数:不需要
     * 3、结果:List<Brand>
     */
    @Test
    public void textSelectAll() throws Exception{
    //1、获取Connection连接对象
        Properties prop=new Properties();
        //加载
        prop.load(new FileInputStream("E://JDBC/jdbc-demo/src/druid.properties"));
        //获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        //获取数据库连接Connection
        Connection conn = dataSource.getConnection();
    //2、定义SQL
        String sql="select*from tb_brand";
    //3、获取pstmt对象
        PreparedStatement pstmt=conn.prepareStatement(sql);
    //4、设置参数
    //5、执行sql
        ResultSet rs=pstmt.executeQuery();
    //6、处理结果List<Brand>  封装Brand对象,装载到List集合
        //创建List集合对象
        List<Brand> list=new ArrayList<>();
        Brand brand=null;
        while(rs.next()){
            //获取数据
            int id = rs.getInt("id");//快捷键ctrl+alt+v生成左边
            String brandName = rs.getString("brand_name");
            String companyName = rs.getString("company_name");
            int ordered = rs.getInt("ordered");
            String description = rs.getString("description");
            int status = rs.getInt("status");
            //封装Brand对象
             brand=new Brand();
            brand.setId(id);
            brand.setBrand_name(brandName);
            brand.setCompany_name(companyName);
            brand.setOrdered(ordered);
            brand.setDescription(description);
            brand.setStatus(status);
            list.add(brand);
        }
        System.out.println(list);
     //7、释放资源
        rs.close();
        pstmt.close();
        conn.close();
    }
}

运行结果: 

2、增加数据

/**
     * 添加
     * SQL:insert into tb_brand (brand_name, company_name, ordered, description, status)values(?,?,?,?,?);
     * 参数是除了id之外的所有参数信息
     * 结果:boolean
     * @throws Exception
     */
    @Test
      public void textAdd()throws Exception{
        /*
        模拟页面提交的参数
         品牌名称[]'
        */
        String brand_name="阿里巴巴";
        // 企业名称
           String company_name="阿里巴巴";
        // 排序字段
           int ordered=1;
        // 描述信息
           String description="知名top企业";
        // 状态:0:禁用1启用
           int status=1;

        //1、获取Connection连接对象
        Properties prop=new Properties();
        //加载
        prop.load(new FileInputStream("E://JDBC/jdbc-demo/src/druid.properties"));
        //获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        //获取数据库连接Connection
        Connection conn = dataSource.getConnection();
        //2、定义SQL
        String sql="insert into tb_brand (brand_name, company_name, ordered, description, status)values(?,?,?,?,?)";
        //3、获取pstmt对象
        PreparedStatement pstmt=conn.prepareStatement(sql);
        //4、设置参数
        pstmt.setString(1, brand_name);//ctrl+b快速复制
        pstmt.setString(2, company_name);
        pstmt.setInt(3, ordered);
        pstmt.setString(4, description);
        pstmt.setInt(5, status);
        //5、执行sql
        int count = pstmt.executeUpdate();
        System.out.println(count>0);

        //7、释放资源

        pstmt.close();
        conn.close();
    }

乱码问题: 

我们运行之后发查询数据库发现乱码了,此时说明编码不一致,只需要在配置文件druid.properties中加入:

characterEncoding=utf8

加完之后运行:

3、修改数据

@Test
    public void textUpdate()throws Exception{
        /*
        模拟页面提交的参数
         品牌名称[]'
        */
        String brand_name="一本正经";
        // 企业名称
        String company_name="一本";
        // 排序字段
        int ordered=666;
        // 描述信息
        String description="心心比心";
        // 状态:0:禁用1启用
        int status=1;
        int id=3;

        //1、获取Connection连接对象
        Properties prop=new Properties();
        //加载
        prop.load(new FileInputStream("E://JDBC/jdbc-demo/src/druid.properties"));
        //获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        //获取数据库连接Connection
        Connection conn = dataSource.getConnection();
        //2、定义SQL
        String sql="update tb_brand set brand_name=?,company_name=?,ordered=?,description=?,status=? where id=?";
        //3、获取pstmt对象
        PreparedStatement pstmt=conn.prepareStatement(sql);
        //4、设置参数
        pstmt.setString(1, brand_name);//ctrl+b快速复制
        pstmt.setString(2, company_name);
        pstmt.setInt(3, ordered);
        pstmt.setString(4, description);
        pstmt.setInt(5, status);
        pstmt.setInt(6, id);
        //5、执行sql
        int count = pstmt.executeUpdate();
        System.out.println(count>0);

        //7、释放资源

        pstmt.close();
        conn.close();
    }

**运行结果: **

** 数据库中的数据变化:**

 4、删除数据

/**
     * 删除数据的sql为delete from 表名 where 删除条件
     * @throws Exception
     */
    @Test
    public void textDelete()throws Exception{

        //1、获取Connection连接对象
        Properties prop=new Properties();
        //加载
        prop.load(new FileInputStream("E://JDBC/jdbc-demo/src/druid.properties"));
        //获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        //获取数据库连接Connection
        Connection conn = dataSource.getConnection();
        //2、定义SQL
        String sql="delete from tb_brand where id=3";
        //3、获取pstmt对象
        PreparedStatement pstmt=conn.prepareStatement(sql);

        //5、执行sql
        int count = pstmt.executeUpdate();
        System.out.println("删除"+(count>0));

        //7、释放资源

        pstmt.close();
        conn.close();
    }

运行结果:

数据库对比图;

后面也可以通过前端回传数据到后端接收来使用数据

相关文章