昨天还在对于自己将DBHelper的实现洋洋得意,今天老师讲完发现自己还是菜了
以下是对于今天所学的个人理解
关于Java mvc分层
- MVC即模型-视图-控制器,将应用程序的逻辑层与展现层进行分离的一种设计模式 + 传统的MVC包括三个方面:模型、视图、控制器。
写的较大型的代码比较少,所以对分层并没有太深的认识
今天初步了解就觉得简单多了
首先是不同包的含义
- bean包 顾名思义请求,主要是和view 即我们所说的视图就是页面打交道
- dao包 就是和数据库打交道的,crud 即增删改查
- model 就是实体类,就是和数据库对于,所生产表的一些属性
- service 服务器层,也叫业务逻辑层,调用dao中的方法,action又调用它
今天完成了对dao层的封装
- User类
package bean;
// 实体类原型 -user; 实体类模型映射数据库字段
public class User {
//1.对属性,参数的封装
private int id; //用户id
private String usename; //用户名
private String usepassword;//用户密码
//2.get set
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsename() {
return usename;
}
public void setUsename(String usename) {
this.usename = usename;
}
public String getUsepassword() {
return usepassword;
}
public void setUsepassword(String usepassword) {
this.usepassword = usepassword;
}
//3.
public User(int id, String usename, String usepassword) {
this.id = id;
this.usename = usename;
this.usepassword = usepassword;
}
public User() {
}
//4.toString 方法重写
@Override
public String toString() {
return "User{" +
"id=" + id +
", usename='" + usename + '\'' +
", usepassword='" + usepassword + '\'' +
'}';
}
}
- User Dao
package dao;
import bean.User;
import util.DBUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
//UserDao - 可以直接和我们的数据库进行交互
public class UseDao {
Connection conn = null;
PreparedStatement pstm = null;
ResultSet rs = null;
//查询全部
public List<User> findAllUser(){
try {
//1.获取连接
conn = DBUtil.get_Conn();
//2.获取存放sql语句的对象
pstm = conn.prepareStatement("select * from tb_user");
//3.执行sql并返回结束
rs = pstm.executeQuery();
//创建集合
List<User> userList = new ArrayList<>();
//
while (rs.next()){
User user = new User();
user.setId(rs.getInt(1));
user.setUsename(rs.getString(2));
user.setUsepassword(rs.getString(3));
userList.add(user);
}
return userList;
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
DBUtil.get_closeConn(rs,pstm,conn);
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}
//查询个体
public User findUser(String usename){
try {
//1.获取连接
conn = DBUtil.get_Conn();
//2.获取存放sql语句的对象
pstm = conn.prepareStatement("select * from tb_user where usename = '"+usename+"'");
//3.执行sql并返回结束
rs = pstm.executeQuery();
User user = new User();
while (rs.next()){
user.setId(rs.getInt(1));
user.setUsename(rs.getString(2));
user.setUsepassword(rs.getString(3));
return user;
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
DBUtil.get_closeConn(rs,pstm,conn);
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}
//增加数据
public int addUser(String usename,String usepassword){
try {
User user = findUser(usename);
conn = DBUtil.get_Conn();
//System.out.println("姓名:"+user.getUsename());
//System.out.println(user);
if(user==null){
pstm = conn.prepareStatement("insert into tb_user (usename,usepassword) values('"+usename+"','"+usepassword+"' )");
pstm.executeUpdate();
}
else{
System.out.println("已经存在该用户名");
return 0;
}
} catch (Exception e) {
e.printStackTrace();
}
return 1;
}
//修改数据
public int changeUserPsw(String usename,String newpsw)
{
User user = findUser(usename);
if(user!=null){
try {
conn = DBUtil.get_Conn();
pstm = conn.prepareStatement("update tb_user set usepassword = '"+newpsw+"' where usename = '"+usename+"'");
pstm.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
};
}else{
System.out.println("无该用户");
return 0;//修改失败
}
return 1;
}
//删除数据
public int deletUse(String usename)
{
User user = findUser(usename);
if(user!=null){
try {
conn = DBUtil.get_Conn();
pstm = conn.prepareStatement("delete from tb_user where usename ='"+usename+"'");
pstm.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
};
}else{
System.out.println("无该用户");
return 0;//删除失败
}
return 1;
}
public static void main(String[] args) {
UseDao userdao = new UseDao();
//User user = userdao.findUser("lmx");
//System.out.println("姓名:"+user.getUsename());
//查单个
//userdao.addUser("a","789456");
//userdao.changeUserPsw("a","123456");
userdao.deletUse("a");
List<User> test = userdao.findAllUser();
int number = test.size();
for(int i=0;i<number;i++){
User user1 = test.get(i);
System.out.println("姓名:"+user1.getUsename());
}
}
}
- DBUtil
package util;
import java.sql.*;
// 工具类
public class DBUtil {
private static String driver = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/day1?useSSL=true&characterEncoding=utf-8";
private static String user = "root";
private static String password = "123456";
static {
try {
//1.获取驱动
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
}
}
//2.创建连接
public static Connection get_Conn ()throws SQLException
{
Connection conn = DriverManager.getConnection(url, user, password);
//System.out.println("数据库连接成功");
return conn;
}
//3.关闭资源
public static void get_closeConn(ResultSet rs, PreparedStatement pstm , Connection conn) throws SQLException{
if(rs!=null){rs.close();}
if(pstm!=null){pstm.close();}
if(conn!=null){conn.close();}
}
//单元测试
public static void main(String[] args) {
try {
get_Conn();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
今日感想:
学了三年的理论知识
和实际的使用脱离了太久
还是得和真正的实践结合起来
并且现在的这个也并不算是真正的实践
望日益进步吧
加油