![](https://img-blog.csdnimg.cn/20210902184317479.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc3BhcnJvdyBqYw==,size_20,color_FFFFFF,t_70,g_se,x_16)
一.util包:放共同类的包(整个项目中,可以共用的一些代码)
例如:一些常用的字符串的非空验证,身份证或者电话号码的正则验证等等
1.JDBC类功能的封装
package util;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* entity/pojo:实体类的包
* dao:直接操作数据库的包(业务逻辑层和数据库持久化层的中间)
* util:放共同类的包(整个项目中,可以共用的一些代码)
* 例如:一些常用的字符串的非空验证,身份证或者电话号码的正则验证等等
* service:业务逻辑层(对dao层再进行一次封装,相当于用来管理指挥dao层的)
*
*一个重要的概念:单例模式(面试简答题):
* 保证只有一个实例对象(主要针对数据库连接的对象)
*步骤:
*1.私有化构造方法(让别人不能直接new对象)
*2.提供一个公共的访问方法(用来提供该类的唯一的一个对象)
*-(必须有且仅有一个的静态变量)
*
*分支:饿汉模式/懒汉模式
*饿汉模式:先把对象创建好,只等别人来调用
*懒汉模式:等别人来调用的时候,再创对象
*/
public class ConfigManager {
//一个静态的变量(该变量就是用来连接数据库的唯一对象)
private static ConfigManager configManager
=new ConfigManager();//饿汉模式
//加载以.properties结尾的配置文件的类
private static Properties properties;
//构造方法的作用:初始化数据(初始化database.preperties配置文件信息)
private ConfigManager(){
properties=new Properties();
//数据库配置文件的名字/路径
String configFile="database.properties";
//通过当前ConfigManager这个类的路径来找到指定的configFile所表示的文件
//并保存到输入流对象中
InputStream is=ConfigManager.class.getClassLoader().getResourceAsStream(configFile);
try {
properties.load(is);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
is.close();//关闭输入流
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 该方法是公共的,用来返回该类中唯一的一个ConfigManager变量
*
*/
public static ConfigManager getInstance(){
//懒汉模式
if(configManager==null){
configManager=new ConfigManager();
}
return configManager;
/**
* 该方法用来获取配置文件中的value值
*/
}
public String getValue(String key){
//根据方法中传入的key值来返回对应的value值
return properties.getProperty(key);
}//为什么这个方法加上静态
}
2.database.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/java2106?useUnicode=true&characterEncoding=UTF-8
user=root
pass=123456
二.实体类包
每一个要操作的实体对象都需要新建一个实体类