数据库编程(4)—— dao层设计

说到dao层,本人就要来进行一下讲解了:
所谓的dao层,就是负责将 数据库中的数据 提取出来,并放在一个model层的 List 或 Map 中,并且当我们之后对于这些 List 或 Map 做出更改时,相应的数据库中的部分也要随之发生改变。简单来讲,就是负责处理 数据库 和 窗口之间的关系的包。

现在,本人对之前的properties文件进行增添,来使得我们能够通过对于properties文件的解析,获悉数据库中提取出来的民族和省份信息是什么:

nation.01 	\u6C49\u65CF
nation.02 	\u8499\u53E4\u65CF
nation.03 	\u56DE\u65CF
nation.04 	\u85CF\u65CF
nation.05 	\u7EF4\u543E\u5C14\u65CF
nation.06 	\u82D7\u65CF
nation.07 	\u5F5D\u65CF
nation.08 	\u58EE\u65CF
nation.09 	\u5E03\u4F9D\u65CF
nation.10 	\u671D\u9C9C\u65CF
nation.11 	\u6EE1\u65CF
nation.12 	\u4F97\u65CF
nation.13 	\u7476\u65CF
nation.14 	\u767D\u65CF
nation.15 	\u571F\u5BB6\u65CF
nation.16 	\u54C8\u5C3C\u65CF
nation.17 	\u54C8\u8428\u514B\u65CF
nation.18 	\u50A3\u65CF
nation.19 	\u9ECE\u65CF
nation.20 	\u5088\u50F3\u65CF
nation.21 	\u4F64\u65CF
nation.22 	\u7572\u65CF
nation.23 	\u9AD8\u5C71\u65CF
nation.24 	\u62C9\u795C\u65CF
nation.25 	\u6C34\u65CF
nation.26 	\u4E1C\u4E61\u65CF
nation.27 	\u7EB3\u897F\u65CF
nation.28 	\u666F\u9887\u65CF
nation.29 	\u67EF\u5C14\u514B\u5B5C\u65CF
nation.30 	\u571F\u65CF
nation.31 	\u8FBE\u65A1\u5C14\u65CF
nation.32 	\u4EEB\u4F6C\u65CF
nation.33 	\u7F8C\u65CF
nation.34 	\u5E03\u6717\u65CF
nation.35 	\u6492\u62C9\u65CF
nation.36 	\u6BDB\u96BE\u65CF
nation.37 	\u4EE1\u4F6C\u65CF
nation.38 	\u9521\u4F2F\u65CF
nation.39 	\u963F\u660C\u65CF
nation.40 	\u666E\u7C73\u65CF
nation.41 	\u5854\u5409\u514B\u65CF
nation.42 	\u6012\u65CF
nation.43 	\u4E4C\u5B5C\u522B\u514B\u65CF
nation.44 	\u4FC4\u7F57\u65AF\u65CF
nation.45 	\u9102\u6E29\u514B\u65CF
nation.46 	\u5D29\u9F99\u65CF
nation.47 	\u4FDD\u5B89\u65CF
nation.48 	\u88D5\u56FA\u65CF
nation.49 	\u4EAC\u65CF
nation.50 	\u5854\u5854\u5C14\u65CF
nation.51 	\u72EC\u9F99\u65CF
nation.52 	\u9102\u4F26\u6625\u65CF
nation.53 	\u8D6B\u54F2\u65CF
nation.54 	\u95E8\u5DF4\u65CF
nation.55 	\u73DE\u5DF4\u65CF
nation.56 	\u57FA\u8BFA\u65CF
nation.97 	\u5176\u4ED6
nation.98 	\u5916\u56FD\u8840\u7EDF

native.110 \u5317\u4EAC\u5E02
native.120 \u5929\u6D25\u5E02
native.130 \u6CB3\u5317\u7701
native.140 \u5C71\u897F\u7701
native.150 \u5185\u8499\u53E4\u81EA\u6CBB\u533A
native.210 \u8FBD\u5B81\u7701
native.220 \u5409\u6797\u7701
native.230 \u9ED1\u9F99\u6C5F\u7701
native.310 \u4E0A\u6D77\u5E02
native.320 \u6C5F\u82CF\u7701
native.330 \u6D59\u6C5F\u7701
native.340 \u5B89\u5FBD\u7701
native.350 \u798F\u5EFA\u7701
native.360 \u6C5F\u897F\u7701
native.370 \u5C71\u4E1C\u7701
native.410 \u6CB3\u5357\u7701
native.420 \u6E56\u5317\u7701
native.430 \u6E56\u5357\u7701
native.440 \u5E7F\u4E1C\u7701
native.450 \u5E7F\u897F\u58EE\u65CF\u81EA\u6CBB\u533A
native.460 \u6D77\u5357\u7701
native.500 \u91CD\u5E86\u5E02
native.510 \u56DB\u5DDD\u7701
native.520 \u8D35\u5DDE\u7701
native.530 \u4E91\u5357\u7701
native.540 \u897F\u85CF\u81EA\u6CBB\u533A
native.610 \u9655\u897F\u7701
native.620 \u7518\u8083\u7701
native.630 \u9752\u6D77\u7701
native.640 \u5B81\u590F\u56DE\u65CF\u81EA\u6CBB\u533A
native.650 \u65B0\u7586\u7EF4\u543E\u5C14\u65CF\u81EA\u6CBB\u533A
native.710 \u53F0\u6E7E\u7701
native.720 \u72D7\u65E5\u7701\u5C0F\u548C\u6C11\u65CF\u81EA\u6CBB\u533A

那么,现在本人来给出 处理学生 民族 以及 出生省份 的接口:

package com.mec.mis.dao;

import java.util.List;

import com.mec.mis.model.NationModel;
import com.mec.mis.model.NativeModel;

public interface INativeDao {
	List<NativeModel> getNatives();
	List<NationModel> getNations();
}

现在,本人来给出两个 实现这个接口的类:
首先,给出一个处理出生省份的类:

package com.mec.mis.dao;

import java.util.List;

import com.mec.mis.model.NationModel;
import com.mec.mis.model.NativeModel;
import com.mec.util.Database;

public class NativeTableDao implements INativeDao {
	private Database database;
	
	static {
		Database.loadDatabaseConfig("/database.cfg.properties");	//解析database.cfg.properties文件
	}
	
	public NativeTableDao() {
		database = new Database();
	}
	
	@Override
	public List<NativeModel> getNatives() {
		return database.list(NativeModel.class);	//将
	}

	@Override
	public List<NationModel> getNations() {
		return database.list(NationModel.class);
	}
	
}

现在,给出一个处理民族的类

package com.mec.mis.dao;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import com.mec.mis.model.NationModel;
import com.mec.mis.model.NativeModel;
import com.mec.util.Database;
import com.mec.util.PropertiesParser;

public class NativePropertiesDao implements INativeDao {
	static {
		Database.loadDatabaseConfig("/database.cfg.properties");
	}
	
	public NativePropertiesDao() {
	}
	
	@Override
	public List<NativeModel> getNatives() {	//将我们将数据库中的所有有关 出生省份 的信息提取出来,放入一个List中
		List<NativeModel> nativeList = new ArrayList<>();
		
		Set<String> nativeKeys = PropertiesParser.keySet();
		Iterator<String> iter = nativeKeys.iterator();
		while (iter.hasNext()) {
			String key = iter.next();
			if (key.startsWith("native.") )  {	//因为我们编写的properties文件中,既有“启动数据库信息”,还有关于“民族”以及“国籍”的信息,所以,我们在录表时,一定要将所需要的信息录入
				String id = key;
				String name = PropertiesParser.value(id);
				nativeList.add(new NativeModel(id.substring(7), name));
			}
		}
		nativeList.sort(new Comparator<NativeModel>() {
			@Override
			public int compare(NativeModel one, NativeModel other) {
				return one.getId().compareTo(other.getId());
			}
		});
		
		return nativeList;
	}

	@Override
	public List<NationModel> getNations() {	//将我们将数据库中的所有有关 民族 的信息提取出来,放入一个List中
		List<NationModel> nationList = new ArrayList<>();
		
		Set<String> nativeKeys = PropertiesParser.keySet();
		Iterator<String> iter = nativeKeys.iterator();
		while (iter.hasNext()) {
			String key = iter.next();
			if (key.startsWith("nation.") )  {	//因为我们编写的properties文件中,既有“启动数据库信息”,还有关于“民族”以及“国籍”的信息,所以,我们在录表时,一定要将所需要的信息录入
				String id = key;
				String name = PropertiesParser.value(id);
				nationList.add(new NationModel(id.substring(7), name));
			}
		}
		nationList.sort(new Comparator<NationModel>() {
			@Override
			public int compare(NationModel one, NationModel other) {
				return one.getId().compareTo(other.getId());
			}
		});
		
		return nationList;
	}
	
}

现在,本人来给出一个接口,用于处理学生的学校、院系 和 专业:

package com.mec.mis.dao;

import java.util.List;

import com.mec.mis.model.SDMModel;

public interface ISDMDao {
	List<SDMModel> getSdmList();
	SDMModel getSdmById(String id);
	int saveSdm(SDMModel sdm);
	int removeSdm(String id);
}

现在,本人来给出一个这个接口的实现类,用于处理 数据库中的有关 学生学校、院系 和 专业 信息:

package com.mec.mis.dao;

import java.util.List;

import com.mec.mis.model.SDMModel;
import com.mec.util.Database;

public class SDMDao implements ISDMDao {
	private Database data;

	public SDMDao() {
		data = new Database();
	}

	@Override
	public List<SDMModel> getSdmList() {
		return data.list(SDMModel.class);
	}

	@Override
	public SDMModel getSdmById(String id) {
		return data.get(SDMModel.class, id);
	}

	@Override
	public int saveSdm(SDMModel sdm) {	//保存 学生信息
		return data.executeUpdate("INSERT INTO sys_sch_dep_maj_info"
				+ " (id, name, status)"
				+ " VALUES ('" + sdm.getId() + "', '" + sdm.getName()
				+ "', " + (sdm.isStatus() ? "1" : "0") + ")");
	}

	@Override
	public int removeSdm(String id) {	//这里就运用到了本人之前设置的status成员,我们将其设置为0就表示这个学生处于“已离校”状态
		return data.executeUpdate("UPDATE sys_sch_dep_maj_info"
				+ " SET status = 0 WHERE id = '" + id + "'");
	}

}

那么,我们本专题想要制作的 dao层 就做出来了,至于接下来的几步操作,将会在本人本专题之后的几篇博文中进行讲解!

从这里开始,逻辑就开始复杂了,如若同学们对于此处的代码有任何不解,请多看几遍,或者在下方的评论区留言。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值