MySQL与Java

目录

数据库连接池技术

Druid连接池

商品数据库面向接口编程设计

 

建立一个Druid连接池工具类

建立个测试类测试连接

建立个BaseDao父类,封装对数据库的增删改操作

建立一个UserDao接口,暴露给上层工厂调用

 建立一个UserDaoIml实现类,完成操作的实现

 

 测试


数据库连接池技术

1.自己手写连接池

2.使用三方库

DBCP        有Bug

C3P0        速度太慢

Druid        阿里巴巴的,很好用

BoneCP        开源组织的,速度也快

HikariCP        据说速度最快

Druid连接池

依赖三方库

商品数据库面向接口编程设计

*.properties属性文件

1.专门用于软件中编写配置参数的

2.格式是     属性名=属性值

druid 要求用户的属性名必须是username

建立一个Druid连接池工具类

import com.alibaba.druid.pool.DruidDataSourceFactory;

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

//连接工具类
public class ConnectionUtil {
    private static DataSource dataSource;   //声明一个存储连接池的指针

    static {
        init();     //类加载时候自动执行静态代码块 调用init()方法
    }

    private static void init(){         //初始化连接池的静态方法
        Properties properties = new Properties();   //用于读properties文件的对象
        try {
            // properties.load() 加载属性文件 参数是属性文件的输入流
            properties.load(ConnectionUtil.class.getClassLoader().getResourceAsStream("database.properties"));
            // DruidDataSourceFactory.createDataSource() 使用三方库创建连接池对象 参数是properties
            dataSource = DruidDataSourceFactory.createDataSource(properties);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
    连接池dataSource被private私有化,连接池初始化的过程对外不可见
    暴露一个公有的方法给外部获取连接对象
    外界 ConnectionUtil.getConnection()
     */
    public static Connection getConnection(){
        try {
            return dataSource.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
}

建立个测试类测试连接

建立个BaseDao父类,封装对数据库的增删改操作

建立一个UserDao接口,暴露给上层工厂调用

 建立一个UserDaoIml实现类,完成操作的实现

是UserDao的具体实现不暴露给上层,而是将UserDao接口暴露给上层调用。

 测试

建立一个BaseEntity,包含阿里巴巴开发手册中建议的每个数据库都要有的四个字段,以后定义的实体类可以继承这个基础父类。

//阿里巴巴开发手册中建议有的4个字段
public class BaseEntity {
    private Integer id;
    private Integer isDelete;
    private String createDate;
    private String modifyDate;

    @Override
    public String toString() {
        return "BaseEntity{" +
                "id=" + id +
                ", isDelete=" + isDelete +
                ", createDate='" + createDate + '\'' +
                ", modifyDate='" + modifyDate + '\'' +
                '}';
    }

    public Integer getId() {
        return id;
    }

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

    public Integer getIsDelete() {
        return isDelete;
    }

    public void setIsDelete(Integer isDelete) {
        this.isDelete = isDelete;
    }

    public String getCreateDate() {
        return createDate;
    }

    public void setCreateDate(String createDate) {
        this.createDate = createDate;
    }

    public String getModifyDate() {
        return modifyDate;
    }

    public void setModifyDate(String modifyDate) {
        this.modifyDate = modifyDate;
    }
}

 定义一个具体实体类,要与具体数据库一一映射

//实体类 -- 和数据库一一映射
public class User extends BaseEntity{
    private String username;
    private String password;
    private String avatar;
    private String sex;
    private String mobile;
    private String idCode;

    @Override
    public String toString() {
        return super.toString() +
                "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", avatar='" + avatar + '\'' +
                ", sex='" + sex + '\'' +
                ", mobile='" + mobile + '\'' +
                ", idCode='" + idCode + '\'' +
                '}';
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getAvatar() {
        return avatar;
    }

    public void setAvatar(String avatar) {
        this.avatar = avatar;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getIdCode() {
        return idCode;
    }

    public void setIdCode(String idCode) {
        this.idCode = idCode;
    }
}

 

 对应的具体数据库字段

下面可以插入一个用户测试一下

成功插入 !

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值