模拟数据库操作
来源:互联网 发布:mac怎么设置手机铃声 编辑:程序博客网 时间:2024/06/05 02:23
转载请注明出处:http://blog.csdn.net/qq_20011175/article/details/77623347
思考第一个问题:为什么模拟数据库操作时,要使用Map而不是List
例如:findById操作,如果是List,只能遍历 如果是Map<key,value>,
根据key读取value,效率高
下面利用了SpringMVC的迷你框架
首先模拟数据库:(利用Map集合---Dao层)
import java.util.HashMap;import java.util.Map;public class DB {public static Map<Integer,Emp> empTable;//这里声明一个静态块,就是在类加载的时候,已经存入,优先于Main()方法,所以static{empTable = new HashMap<Integer,Emp>();//初始化数据Emp e1 = new Emp(1001,"zhao",4000);Emp e2 = new Emp(1002,"qian",3000);Emp e3 = new Emp(1003,"sun",5000);Emp e4 = new Emp(1004,"li",8000);//存入数据empTable.put(e1.getEmpno(), e1);empTable.put(e2.getEmpno(), e2);empTable.put(e3.getEmpno(), e3);empTable.put(e4.getEmpno(), e4);}//测试,打印输入public static void main(String[] args) {//声明一个Map集合对象,存入DB.empTable里的数据Map<Integer,Emp> emps = DB.empTable;//这里遍历方式是,获取Map的键,然后利用增强for的方式 打印输入。for(Map.Entry<Integer,Emp> entry:emps.entrySet()){System.out.println(entry.getKey()+":"+entry.getValue());}}}
业务层:(Service层)
import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.Set;import org.springframework.stereotype.Service;import com.company.dao.DB;import com.company.dao.Emp;@Service//自动将EmpService取名为empService注入到IOC容器中public class EmpService {/** * 新增数据 * @param emp * @return */public String save(Emp emp) {DB.empTable.put(emp.getEmpno(), emp);System.out.println("save " + emp + " success!");return "success";}/** * 删除数据 * @param emp * @return */public String delete(Emp emp) {DB.empTable.remove(emp.getEmpno());System.out.println("delete " + emp.getEmpno() + " success!");return "success";}/** * 更新数据 * @param emp * @return */public String update(Emp emp) {DB.empTable.put(emp.getEmpno(), emp);System.out.println("update " + emp + " success!");return "success";}/** * 检索所有数据---方式1:放回键 * @param emp * @return *///set 转 list 集合public List<Emp> findAll() {//定义一个list集合List<Emp> emps = new ArrayList<Emp>();//获取Map集合的键,放入Set集合里Set<Integer> keys = DB.empTable.keySet();//遍历set集合,for (Integer key : keys) {//并转存到list集合中emps.add(DB.empTable.get(key));}//数据放回return emps;}/** * 检索所有数据-----方式2:放回值 * @param emp * @return */public List<Emp> findAll2() {//同样先声明一个List集合对象empsList<Emp> emps = new ArrayList<Emp>();//同理:遍历,根据Map键for (Map.Entry<Integer, Emp> entry : DB.empTable.entrySet()) {//将键值存入list对象,放回数据emps.add(entry.getValue());}return emps;}/** * 检索所有数据-----方式2:放回值无遍历 * @param emp * @return */public List<Emp> findAll3() {return new ArrayList<Emp>(DB.empTable.values());}/** * 精确检索数据 * @param emp * @return */public Emp findById(int id) {return DB.empTable.get(id);}/** * 模糊检索相关数据 * @param emp * @return */public List<Emp> findByName(String name) {//同理List<Emp> emps = new ArrayList<Emp>();//同理for (Map.Entry<Integer, Emp> entry : DB.empTable.entrySet()) {//判断,根据键的值获取数据,一一添加,判断是否还有数据。(-1代表无数据)if (entry.getValue().getEname().indexOf(name) != -1) {//添加到list集合对象中emps.add(entry.getValue());}}return emps;}}控制层---Action
import java.util.ArrayList;import java.util.List;import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import com.company.dao.Emp;import com.company.service.EmpService;@Controller@RequestMapping("empunit")public class EmpAction {@Autowiredprivate EmpService empService;@RequestMapping("showsave")public String showSave(){return "save";}@RequestMapping(value = "save", method = RequestMethod.POST)public String save(@ModelAttribute Emp emp) {System.out.println("save " + emp);return empService.save(emp);}@RequestMapping(value = "delete")public String delete(@ModelAttribute Emp emp) {System.out.println("delete " + emp);return empService.delete(emp);}@RequestMapping(value = "update")public String update(@ModelAttribute Emp emp) {System.out.println("update " + emp);return empService.update(emp);}@RequestMapping(value = "findall")public String findAll(Map<String, Object> map) {List<Emp> emps = empService.findAll();map.put("emps", emps);return "emps";}@RequestMapping(value = "findbyid")public String findById(@RequestParam("empno") int id, Map<String, Object> map) {List<Emp> emps = new ArrayList<Emp>();emps.add(empService.findById(id));map.put("emps", emps);return "emps";}@RequestMapping(value = "findbyname")public String findByName(@RequestParam("ename") String name, Map<String, Object> map) {map.put("emps", empService.findByName(name));return "emps";}}
阅读全文
1 0
- C#数据库操作模拟
- 模拟数据库操作
- 模拟实现数据库常用操作效果
- 6,redis模拟关系型数据库操作
- 数据库CRUD增删改查操作模拟
- 模拟web开发环境 对MySql数据库的操作
- 用xml模拟数据库,并实现基本的CURD操作
- 利用魔术方法__call模拟数据库连贯操作
- android: ListView,及数据库操作,模拟实现 联系人功能
- 【自制】javascript模拟数据库查询及格式化操作
- VC模拟键盘操作
- VC模拟鼠标操作
- C# 模拟鼠标操作
- VB模拟键盘操作
- VC模拟键盘操作
- 模拟键盘鼠标操作
- 模拟二进制的"|" "&"操作
- 模拟键盘操作
- java 网易编程题知识忽略点总结
- add-apt-repository PPA(转)
- cocos2dx-js 用eclipse编译到Android
- Java文件复制与读写
- 5、python设计模式之单例
- 模拟数据库操作
- 直接继承和虚继承的内存布局
- Eclipse ADT 下载汇总
- Permutation Sequence 全排列的第k个数 python
- 几个Python运算符
- HTML02-html文件的编写规则
- C++多态
- WPF控制动画开始、停止、暂停和恢复
- ccf c++ 工资计算,这个算法个人觉得没有问题,但只能得50分,请教如何解决?