User-Profile-Image
hankin
  • 5
  • Java
  • Kotlin
  • Spring
  • Web
  • SQL
  • MegaData
  • More
  • Experience
  • Enamiĝu al vi
  • 分类
    • Zuul
    • Zookeeper
    • XML
    • WebSocket
    • Web Notes
    • Web
    • Vue
    • Thymeleaf
    • SQL Server
    • SQL Notes
    • SQL
    • SpringSecurity
    • SpringMVC
    • SpringJPA
    • SpringCloud
    • SpringBoot
    • Spring Notes
    • Spring
    • Servlet
    • Ribbon
    • Redis
    • RabbitMQ
    • Python
    • PostgreSQL
    • OAuth2
    • NOSQL
    • Netty
    • MySQL
    • MyBatis
    • More
    • MinIO
    • MegaData
    • Maven
    • LoadBalancer
    • Kotlin Notes
    • Kotlin
    • Kafka
    • jQuery
    • JavaScript
    • Java Notes
    • Java
    • Hystrix
    • Git
    • Gateway
    • Freemarker
    • Feign
    • Eureka
    • ElasticSearch
    • Docker
    • Consul
    • Ajax
    • ActiveMQ
  • 页面
    • 归档
    • 摘要
    • 杂图
    • 问题随笔
  • 友链
    • Spring Cloud Alibaba
    • Spring Cloud Alibaba - 指南
    • Spring Cloud
    • Nacos
    • Docker
    • ElasticSearch
    • Kotlin中文版
    • Kotlin易百
    • KotlinWeb3
    • KotlinNhooo
    • 前端开源搜索
    • Ktorm ORM
    • Ktorm-KSP
    • Ebean ORM
    • Maven
    • 江南一点雨
    • 江南国际站
    • 设计模式
    • 熊猫大佬
    • java学习
    • kotlin函数查询
    • Istio 服务网格
    • istio
    • Ktor 异步 Web 框架
    • PostGis
    • kuangstudy
    • 源码地图
    • it教程吧
    • Arthas-JVM调优
    • Electron
    • bugstack虫洞栈
    • github大佬宝典
    • Sa-Token
    • 前端技术胖
    • bennyhuo-Kt大佬
    • Rickiyang博客
    • 李大辉大佬博客
    • KOIN
    • SQLDelight
    • Exposed-Kt-ORM
    • Javalin—Web 框架
    • http4k—HTTP包
    • 爱威尔大佬
    • 小土豆
    • 小胖哥安全框架
    • 负雪明烛刷题
    • Kotlin-FP-Arrow
    • Lua参考手册
    • 美团文章
    • Java 全栈知识体系
    • 尼恩架构师学习
    • 现代 JavaScript 教程
    • GO相关文档
    • Go学习导航
    • GoCN社区
    • GO极客兔兔-案例
    • 讯飞星火GPT
    • Hollis博客
    • PostgreSQL德哥
    • 优质博客推荐
    • 半兽人大佬
    • 系列教程
    • PostgreSQL文章
    • 云原生资料库
    • 并发博客大佬
Help?

Please contact us on our email for need any support

Support
    首页   ›   Java   ›   正文
Java

Java面向对象(工厂代理)

2020-03-07 23:18:45
1258  0 0

阅读完需:约 4 分钟

这是一个java面向对象的基本练习,主要是以练习为主,包含了MySQL,javaBean,继承,实现,重写,覆盖等。
总目录:

1.首先写一个连接MySQL的java文件,在写文件之前要先导入MySQL的包!!

//DatabaseConnection.java
public class DatabaseConnection {
	private static final String cond="com.mysql.jdbc.Driver";
	private static final String conc="jdbc:mysql://localhost:3306/mydata?characterEncoding=utf-8";
	private static final String username="root";
	private static final String password="123";
	private static Connection con=null;
	
	public static Connection getConnection() throws Exception{
		Class.forName(cond);
		con=DriverManager.getConnection(conc, username, password);
		return con;
	}
	
	public void close() throws SQLException{
		con.close();
	}
	
}

DatabaseConnection.java包含了数据库的地址,账号,密码以及加载包,同时要封装起来返回一个Connection类型的con便于后续调用数据库。

2.编写javaBean文件

//Emp.java
public class Emp {
private int empno;
private String ename;
private String job;
private Date hiredate;
private float sal;
public int getEmpno() {
	return empno;
}
public void setEmpno(int empno) {
	this.empno = empno;
}
public String getEname() {
	return ename;
}
public void setEname(String ename) {
	this.ename = ename;
}
public String getJob() {
	return job;
}
public void setJob(String job) {
	this.job = job;
}
public Date getHiredate() {
	return hiredate;
}
public void setHiredate(Date hiredate) {
	this.hiredate = hiredate;
}
public float getSal() {
	return sal;
}
public void setSal(float sal) {
	this.sal = sal;
}
@Override
public String toString() {
	return "Emp [empno=" + empno + ", ename=" + ename + ", job=" + job
			+ ", hiredate=" + hiredate + ", sal=" + sal + "]";
}

}

javaBean文件包含属性的get和set以及重写的toString方法

3.编写接口文件,写入需要的方法

//IEmp.java
public interface IEmp {
	public Emp findById(int empno) throws Exception;
	public List<Emp> findByName(String name) throws Exception;
	public int doInsert(Emp emp)throws Exception;
	public int doupdate(Emp emp)throws Exception;
}

4.编写连接数据库的文件,用于数据的增删改查

//EmpImp.java
public class EmpImp implements IEmp{
	
private Connection conn=null;
private PreparedStatement pre=null;

public EmpImp(Connection con){
	this.conn=con;
}

	public Emp findById(int empno) throws Exception {
		Emp emp=null;
		String sql="select * from emp where empno=?";
		pre=conn.prepareStatement(sql);
		pre.setInt(1,empno);
		ResultSet re=pre.executeQuery();
		if(re.next()){
			emp=new Emp();
			emp.setEmpno(re.getInt(1));
			emp.setEname(re.getString(2));
			emp.setHiredate(re.getDate(4));
			emp.setJob(re.getString(3));
			emp.setSal(re.getFloat(5));
		}
		pre.close();
		return emp;
	}

	public List<Emp> findByName(String name) throws Exception {
		List<Emp> list=new ArrayList<Emp>();
		String sql="select * from emp where ename like ? or job like ?";
		pre=conn.prepareStatement(sql);
		pre.setString(1,"%"+name+"%");
		pre.setString(2, "%"+name+"%");
		ResultSet re=pre.executeQuery();
//		int count=re.getMetaData().getColumnCount();
		while(re.next()){
			Emp emp=new Emp();
			emp.setEmpno(re.getInt(1));
			emp.setEname(re.getString(2));
			emp.setHiredate(re.getDate(4));
			emp.setJob(re.getString(3));
			emp.setSal(re.getFloat(5));
			list.add(emp);
		}
		return list;
	}

	public int doInsert(Emp emp) throws Exception {
		// TODO Auto-generated method stub
		int i=0;
		String sql="insert into emp values(?,?,?,?,?)";
		pre=conn.prepareStatement(sql);
		pre.setInt(1,emp.getEmpno());
		pre.setString(2, emp.getEname());
		pre.setString(3, emp.getJob());
		pre.setDate(4, new java.sql.Date(emp.getHiredate().getTime()));
		pre.setFloat(5, emp.getSal());
		i=pre.executeUpdate();
		return i;
	}

	public int doupdate(Emp emp) throws Exception {
		int i=0;
		String sql="update emp set ename =?,job=?,hiredate=?,sal=? where empno=?";
		pre=conn.prepareStatement(sql);
		pre.setString(1, emp.getEname());
		pre.setString(2, emp.getJob());
		pre.setDate(3, new java.sql.Date(emp.getHiredate().getTime()));
		pre.setFloat(4, emp.getSal());
		pre.setInt(5,emp.getEmpno());
		i=pre.executeUpdate();
		return i;
	}
	
}

EmpImp.java文件主要实现了IEmp.java的接口方法,同时利用自身的构造方法载入数据库连接con
public EmpImp(Connection con){
             this.conn=con;
}
和javaBean建立起联系,利用javaBean来暂时存储数据

5.代理模式——主要用于加载DatabaseConnection.java这个数据库连文件,并且将属性注入到EmpImp.java这个实现类中

//EmpProxy.java
public class EmpProxy implements IEmp{
private DatabaseConnection mycon=null;
private IEmp dao;

public EmpProxy() throws Exception{
	dao=new EmpImp(DatabaseConnection.getConnection());
}
	public Emp findById(int empno) throws Exception {
		// TODO Auto-generated method stub
		Emp emp=dao.findById(empno);
		return emp;
	}
	
	public List<Emp> findByName(String name) throws Exception {
		
		return dao.findByName(name);
	}
	public int doInsert(Emp emp) throws Exception {
		// TODO Auto-generated method stub
		int i=0;
		if(dao.findById(emp.getEmpno())==null){
			dao.doInsert(emp);
			i=1;
		}
		return i ;
	}
	public int doupdate(Emp emp) throws Exception {
		// TODO Auto-generated method stub
		int i=0;
		if(dao.findById(emp.getEmpno())!=null){
			dao.doupdate(emp);
			i=1;
		}
		return i;
	}
	
	
}

EmpProxy.java同时也实现了IEmp.java这个接口文件的方法来实现EmpImp.java里面方法的调用。
实例化DatabaseConnection.java文件并调用getConnection( )方法
public EmpProxy() throws Exception{
dao=new EmpImp(DatabaseConnection.getConnection());
}

6.工厂模式——因为可能代理类有很多个所以需要一个工厂类来管理和调用

//EmpFactor.java
public class EmpFactory {
	public static IEmp getEmp() throws Exception{
		return new EmpProxy(); 
	}
}

7.最后就是测试文件了

//Text.java
public class Text {

	/**
	 * @param args
	 * @throws Exception 
	 */
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		IEmp dao =EmpFactory.getEmp();
		Emp emp1=dao.findById(1001);
		System.out.println(emp1);
		
		List<Emp> list =dao.findByName("科");
		Iterator<Emp> it=list.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
		}
		
		Emp emp=new Emp();
		emp.setEmpno(4001);
		emp.setHiredate(new Date());
		int i=dao.doInsert(emp);
		System.out.println(i);
		
		emp.setEmpno(8);
		emp.setEname("kkkkkkkkasdasd");
		emp.setHiredate(new Date());
		int k=dao.doupdate(emp);
		System.out.println(k);
		
		
	}

}

如本文“对您有用”,欢迎随意打赏作者,让我们坚持创作!

0 打赏
Enamiĝu al vi
不要为明天忧虑.因为明天自有明天的忧虑.一天的难处一天当就够了。
543文章 68评论 294点赞 593489浏览

随机文章
SpringMVC笔记13—@ModelAttribute
5年前
Spring笔记2—IOC
5年前
Java—装饰器模式和代理模式的区别
5年前
SpringMVC笔记16—静态资源访问
5年前
SpringMVC—HandlerMethodArgumentResolver参数处理器
3年前
博客统计
  • 日志总数:543 篇
  • 评论数目:68 条
  • 建站日期:2020-03-06
  • 运行天数:1927 天
  • 标签总数:23 个
  • 最后更新:2024-12-20
Copyright © 2025 网站备案号: 浙ICP备20017730号 身体没有灵魂是死的,信心没有行为也是死的。
主页
页面
  • 归档
  • 摘要
  • 杂图
  • 问题随笔
博主
Enamiĝu al vi
Enamiĝu al vi 管理员
To be, or not to be
543 文章 68 评论 593489 浏览
测试
测试
看板娘
赞赏作者

请通过微信、支付宝 APP 扫一扫

感谢您对作者的支持!

 支付宝 微信支付