数据库操作
分层设计原理
- dao(主要进行持久化操作(对于数据库的操作都是持久化操作;jdbc;dbutils;mybatis;hibernate;springjpa;springjdbctemoplete等等))数据访问层(一般是接口跟实现)
- service(主要进行业务层的操作,主要是承上启下;向下调用dao;向上返回数据给控制层controller(servlet)业务层(也是接口跟实现)
- controller(主要进行前端请求接收;根据请求进入不同的方法操作,向下调用service)控制层
- entity(pojo、domain:存放与数据库表一一对应的javaBean)实体类
- tools(基本上的所有的工具类都放在里面(数据库连接,String转换,日期转换,数字转换,json转换,自己写的工具))Hutool糊涂工具封装了各种各样的工具
PO,VO,BO,POJO的区别
PO:持久化对象,一个PO就是数据库中的一条记录
POJO:一个简单普通的Java对象,不包含业务逻辑或持久逻辑,持久化后是PO,传递过程中是DTO,对应表示层是VO
BO:业务对象,一个对象的行为和动作
VO:Value Object值对象,体现在视图的对象,在控制层与视图层进行传输交换
DTO(TO):数据传输对象,经过处理后的PO
数据库的连接
static String user = "账号";
static String password = "密码";
static String url = "jdbc:mysql://localhost:端口号/数据库名?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8";
static {
try {
Class.forName("com.mysql.cj.jdbc.Driver");//8.0的数据库
} 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;
}
//关闭资源
public static void close(Connection connection, ResultSet rs, Statement ps) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Connection:接口
Statement、PreparedStatement:接口
ResultSet:接口
接口:相当模板,所有的操作都写在里边,dao中的接口跟boot中的接口不一样
数据库设置的类型为char或varchar,在java中都是设置成String
数据查询
public static ResultSet getData(String sql,Object... datas) {
try{
conn= DBUtils.getConnection();
ps = conn.prepareStatement(sql);
if(datas!=null){
for(int i=0;i<datas.length;i++){
ps.setObject(i+1,datas[i]);
}
}
rs = ps.executeQuery();
}catch(Exception e){
e.printStackTrace();
}finally {
close();
}
return rs;
}
数据增加、删除、修改
public static int DataOpera(String sql,Object... datas) {
int count=0;
try{
conn= DBUtils.getConnection();
ps = conn.prepareStatement(sql);
if(datas!=null){
for(int i=0;i<datas.length;i++){
ps.setObject(i+1,datas[i]);
}
}
count = ps.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}finally {
close();
}
return count;
}

浙公网安备 33010602011771号