`
acen.chen
  • 浏览: 157388 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

向数据库加入大量数据

阅读更多
InitSystemData
java 代码
 
  1. package com.bjsxt.oa.manager.impl;   
  2.   
  3. import java.io.BufferedReader;   
  4. import java.io.InputStream;   
  5. import java.io.InputStreamReader;   
  6. import java.text.SimpleDateFormat;   
  7. import java.util.List;   
  8.   
  9. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;   
  10.   
  11. import com.bjsxt.oa.manager.AclManager;   
  12. import com.bjsxt.oa.manager.DataDictionaryManager;   
  13. import com.bjsxt.oa.manager.InitSystemData;   
  14. import com.bjsxt.oa.manager.ModuleManager;   
  15. import com.bjsxt.oa.manager.PartyManager;   
  16. import com.bjsxt.oa.manager.PersonManager;   
  17. import com.bjsxt.oa.manager.RoleManager;   
  18. import com.bjsxt.oa.manager.UserManager;   
  19. import com.bjsxt.oa.model.DataDictionary;   
  20. import com.bjsxt.oa.model.Module;   
  21. import com.bjsxt.oa.model.Party;   
  22. import com.bjsxt.oa.model.Person;   
  23. import com.bjsxt.oa.model.Role;   
  24. import com.bjsxt.oa.model.User;   
  25.   
  26. public class InitSystemDataImpl extends HibernateDaoSupport implements InitSystemData{   
  27.   
  28.     static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");   
  29.        
  30.     private ModuleManager moduleManager;   
  31.     private RoleManager roleManager;   
  32.     private AclManager aclManager;   
  33.     private PersonManager personManager;   
  34.     private PartyManager partyManager;   
  35.     private UserManager userManager;   
  36.     private DataDictionaryManager dataDictionaryManager;   
  37.   
  38.     public void addInitSystemData(){   
  39.         addInitModuleData();   
  40.         addInitRoleData();   
  41.         addInitPartyData();   
  42.         addInitPersonData();   
  43.         addInitDictionaryData();   
  44.     }   
  45.        
  46.     //初始化模块信息   
  47.     public void addInitModuleData(){   
  48.         try {   
  49.             InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("module.txt");   
  50.                
  51.             BufferedReader reader = new BufferedReader(new InputStreamReader(is));   
  52.             String line = null;   
  53.             Module parent = null;   
  54.             int order = 1;   
  55.             while((line = reader.readLine()) != null){   
  56.                 if(line.trim().equals("")){   
  57.                     continue;   
  58.                 }   
  59.                    
  60.                 //submodule   
  61.                 if(line.startsWith("\t")){   
  62.                     String[] ss = line.trim().split(",");   
  63.                     Module sub = new Module();   
  64.                     sub.setName(ss[0].trim());   
  65.                     sub.setSn(ss[1].trim());   
  66.                     sub.setUrl(ss[2].trim());   
  67.                     sub.setOrderNo(order++);   
  68.                     moduleManager.addModule(sub, parent.getId());   
  69.                 }else//parentmodule   
  70.                     String[] ss = line.trim().split(",");   
  71.                     parent = new Module();   
  72.                     parent.setName(ss[0].trim());   
  73.                     parent.setSn(ss[1].trim());   
  74.                     parent.setOrderNo(order++);   
  75.                     moduleManager.addModule(parent, 0);   
  76.                 }   
  77.             }   
  78.         } catch (Exception e) {   
  79.             e.printStackTrace();   
  80.             throw new RuntimeException(e);   
  81.         }   
  82.     }   
  83.        
  84.     //初始化角色信息以及角色的访问权限   
  85.     public void addInitRoleData(){   
  86.         try {   
  87.             InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("role.txt");   
  88.                
  89.             BufferedReader reader = new BufferedReader(new InputStreamReader(is));   
  90.             String line = null;   
  91.             while((line = reader.readLine()) != null){   
  92.                 if(line.trim().equals("")){   
  93.                     continue;   
  94.                 }   
  95.                 String[] ss = line.trim().split(":");   
  96.                    
  97.                 Role role = new Role();   
  98.                 role.setName(ss[0].trim());   
  99.                 roleManager.addRole(role);   
  100.                    
  101.                 //获取被分配的模块列表   
  102.                 String moduleString = ss[1].trim();   
  103.                 String[] moduleNames = moduleString.split(",");   
  104.                 int[] moduleIds = new int[moduleNames.length];   
  105.                 for(int i=0; i
  106.                     List list = getHibernateTemplate().find("from Module where name = ?",moduleNames[i]);   
  107.                     if(list.isEmpty()){   
  108.                         throw new RuntimeException("找不到相应模块["+moduleNames[i]+"]");   
  109.                     }   
  110.                     if(list.size() > 1){   
  111.                         throw new RuntimeException("存在同名模块["+moduleNames[i]+"]");   
  112.                     }   
  113.                     Module m = (Module)list.get(0);   
  114.                     moduleIds[i] = m.getId();   
  115.                 }   
  116.                 aclManager.addAcls(role.getId(), moduleIds);   
  117.             }   
  118.         } catch (Exception e) {   
  119.             e.printStackTrace();   
  120.             throw new RuntimeException(e);   
  121.         }   
  122.     }   
  123.        
  124.     //初始化机构信息   
  125.     public void addInitPartyData(){   
  126.         try {   
  127.             InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("party.txt");   
  128.                
  129.             BufferedReader reader = new BufferedReader(new InputStreamReader(is));   
  130.             String line = null;   
  131.             Party parent = null;   
  132.             Party sub = null;   
  133.             while((line = reader.readLine()) != null){   
  134.                 if(line.trim().equals("")){   
  135.                     continue;   
  136.                 }   
  137.                 String name = line.trim();   
  138.                 //第三级机构信息   
  139.                 if(line.startsWith("\t\t")){   
  140.                     Party subsub = new Party();   
  141.                     subsub.setName(name);   
  142.                     subsub.setParent(sub);   
  143.                     getHibernateTemplate().save(subsub);   
  144.                     subsub.setSn(sub.getSn()+"_"+subsub.getId()); //设置SN的值   
  145.                     getHibernateTemplate().update(subsub);   
  146.                 }   
  147.                 //第二级机构信息   
  148.                 else if(line.startsWith("\t")){   
  149.                     sub = new Party();   
  150.                     sub.setName(name);   
  151.                     sub.setParent(parent);   
  152.                     getHibernateTemplate().save(sub);   
  153.                     sub.setSn(parent.getSn()+"_"+sub.getId());   
  154.                     getHibernateTemplate().update(sub);   
  155.                 }else//parentmodule   
  156.                     parent = new Party();   
  157.                     parent.setName(name);   
  158.                     getHibernateTemplate().save(parent);   
  159.                     parent.setSn(parent.getId()+"");   
  160.                     getHibernateTemplate().update(parent);   
  161.                 }   
  162.             }   
  163.         } catch (Exception e) {   
  164.             e.printStackTrace();   
  165.             throw new RuntimeException(e);   
  166.         }   
  167.     }   
  168.        
  169.     //初始化人员信息   
  170.     public void addInitPersonData(){   
  171.         try {   
  172.             InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("person.txt");   
  173.                
  174.             BufferedReader reader = new BufferedReader(new InputStreamReader(is));   
  175.             String line = null;   
  176.             while((line = reader.readLine()) != null){   
  177.                 if(line.trim().equals("")){   
  178.                     continue;   
  179.                 }   
  180.                 String[] ss = line.trim().split(",");   
  181.                 String personName = ss[0];   
  182.                 String userAccount = ss[1];   
  183.                 String partyName = ss[2]; //从index==3起,是用户具有的角色   
  184.                    
  185.                 //根据名称获取机构信息   
  186.                 Party party = null;   
  187.                 List list = getHibernateTemplate().find("from Party where name = ?",partyName);   
  188.                 if(list.isEmpty() || list.size() > 1){   
  189.                     throw new RuntimeException("机构不存在或机构名称重复!");   
  190.                 }   
  191.                 party = (Party)list.get(0);   
  192.                    
  193.                 //根据角色名称,获取角色的ID列表   
  194.                 int roleslength = ss.length - 3;   
  195.                 int[] roleIds = new int[roleslength];   
  196.                 for(int i=0; i
  197.                     String roleName = ss[3 + i];   
  198.                     List rolelist = getHibernateTemplate().find("from Role where name = ?",roleName);   
  199.                     if(rolelist.isEmpty() || rolelist.size() > 1){   
  200.                         throw new RuntimeException("无法找到被分配的角色名称或角色名称有重复");   
  201.                     }   
  202.                     roleIds[i] = ((Role)rolelist.get(0)).getId();   
  203.                 }   
  204.                    
  205.                 //创建Person对象   
  206.                 Person person = new Person();   
  207.                 person.setName(personName);   
  208.                 person.setParty(party);   
  209.                 person.setSex("1");   
  210.                 person.setAddress("北京");   
  211.                 person.setPhone("12345678");   
  212.                 getHibernateTemplate().save(person);   
  213.                    
  214.                 //创建User对象   
  215.                 User user = new User();   
  216.                 user.setAccount(userAccount);   
  217.                 user.setPassword(userAccount);   
  218.                 user.setExpireTime(format.parse("2008-11-11"));   
  219.                 userManager.addUser(user, person.getId(), roleIds);   
  220.             }   
  221.         } catch (Exception e) {   
  222.             e.printStackTrace();   
  223.             throw new RuntimeException(e);   
  224.         }   
  225.     }   
  226.        
  227.     //初始化代码表   
  228.     public void addInitDictionaryData(){   
  229.         try {   
  230.             InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("code.txt");   
  231.                
  232.             BufferedReader reader = new BufferedReader(new InputStreamReader(is));   
  233.             String line = null;   
  234.             String category = null;   
  235.             while((line = reader.readLine()) != null){   
  236.                 if(line.trim().equals("")){   
  237.                     continue;   
  238.                 }   
  239.                    
  240.                 //添加字典条目   
  241.                 if(line.startsWith("\t")){   
  242.                     String[] ss = line.trim().split(",");   
  243.                     DataDictionary dict = new DataDictionary();   
  244.                     dict.setCategory(category);   
  245.                     dict.setCode(ss[0].trim());   
  246.                     dict.setText(ss[1].trim());   
  247.                     dataDictionaryManager.addDictionary(dict);   
  248.                 }else{   
  249.                     category = line.trim();   
  250.                 }   
  251.                    
  252.             }   
  253.         } catch (Exception e) {   
  254.             e.printStackTrace();   
  255.             throw new RuntimeException(e);   
  256.         }   
  257.     }   
  258.        
  259.        
  260.     public void setDataDictionaryManager(DataDictionaryManager dataDictionaryManager) {   
  261.         this.dataDictionaryManager = dataDictionaryManager;   
  262.     }   
  263.   
  264.     public void setModuleManager(ModuleManager moduleManager) {   
  265.         this.moduleManager = moduleManager;   
  266.     }   
  267.   
  268.     public void setPartyManager(PartyManager partyManager) {   
  269.         this.partyManager = partyManager;   
  270.     }   
  271.   
  272.     public void setPersonManager(PersonManager personManager) {   
  273.         this.personManager = personManager;   
  274.     }   
  275.   
  276.     public void setRoleManager(RoleManager roleManager) {   
  277.         this.roleManager = roleManager;   
  278.     }   
  279.   
  280.     public void setUserManager(UserManager userManager) {   
  281.         this.userManager = userManager;   
  282.     }   
  283.   
  284.     public void setAclManager(AclManager aclManager) {   
  285.         this.aclManager = aclManager;   
  286.     }      
  287. }   

 

Java代码 复制代码
  1. package com.bjsxt.orm;   
  2.   
  3. import junit.framework.TestCase;   
  4.   
  5. import org.springframework.beans.factory.BeanFactory;   
  6. import org.springframework.context.support.ClassPathXmlApplicationContext;   
  7.   
  8. import com.bjsxt.orm.manager.InitSystemData;   
  9.   
  10. public class InitSystemDataTest extends TestCase {   
  11.     static BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext-*.xml");   
  12.        
  13.     public void testAddInitSystemData() {   
  14.         InitSystemData init = (InitSystemData)factory.getBean("initSystemData");   
  15.         init.addInitSystemData();   
  16.     }   
  17.   
  18. }  
分享到:
评论

相关推荐

    vb批量将excel数据导入access以及批量将access数据库中的数据导入excel源代码

    在VB(Visual Basic)编程环境中,常常需要处理数据导入导出的问题,特别是在处理大量数据时,Excel和Access数据库之间的交互显得尤为重要。标题提到的“vb批量将excel数据导入access以及批量将access数据库中的数据...

    数据库编程PPT 操作数据

    这使得应用程序在不保持与实际数据库连接的情况下也能处理大量数据,特别适合进行大批量的查询和修改。DataSet由DataTable对象组成,每个DataTable代表一个表格,包含了DataColumn(列)和DataRow(行)。创建...

    plsql批量导入数据

    当我们需要处理大量数据导入任务时,PLSQL提供了多种方法来实现批量导入,这些方法高效且灵活。本文将详细介绍如何在PLSQL中进行批量导入数据。 一、SQL*Loader SQL*Loader是Oracle提供的一个命令行工具,它能够...

    Oracle数据库的数据保护机制及应用

    由于数据库系统中大量数据集中存放,并且为许多用户直接共享,是宝贵的信息资源,因此安全问题尤为突出。 1. 用户验证和口令存储管理 对数据库系统而言,任何用户对数据库提出的任何操作都必须强制通过系统的安全...

    嵌入式移动数据库系统中的数据查询

    数据广播具有良好的可伸缩性,因为广播数据的开销与接收的客户端数量无关,可以在支持大量移动客户端访问数据时,具有较小的开销。此外,移动客户端在断接状态下也可以访问到最新数据,从而提高了移动数据库系统的...

    DB2数据库自动导出数据INSERT SQL脚本工具

    例如,你可能需要在数据迁移前进行某些数据清洗或转换操作,或者在生成的脚本中加入事务控制语句(如BEGIN和COMMIT),以确保数据的一致性。 DB2 INSERT 数据 SQL脚本的生成是数据库管理和维护的重要环节,尤其在...

    C#大数据批量插入Access程序

    - **批量操作间隔**:在大量数据插入过程中,适当加入延迟,防止对数据库造成过大压力。 这个"C#大数据批量插入Access程序"的源代码会展示这些概念和技术的实际应用,为开发者提供了一个高效处理大数据的模板。通过...

    将excel数据插入到数据库中去demo.zip

    - 当批量插入大量数据时,使用数据库事务可以保证数据的一致性。一旦发生错误,可以回滚事务,避免部分数据插入成功,部分失败的情况。 - 可以使用Connection对象的setAutoCommit(false)来禁用自动提交,然后在...

    从数据库得到的结果集存放到List集合中

    在IT行业中,数据库是存储和管理数据的核心工具,而Java作为一种广泛应用的编程语言,常常用于与...这种做法在实际开发中非常常见,尤其是在处理大量数据时,通过List集合可以方便地对数据进行进一步的处理和操作。

    超详细数据库系统与概论笔记2019上——个人笔记.zip

    数据库系统是信息技术中的核心部分,它负责存储、管理和检索数据,是企业和组织处理大量信息的基础。这份"超详细数据库系统与概论笔记2019上——个人笔记"的压缩包,包含了对《数据库系统与原理》一书的深度学习和...

    基于云技术的分布式实时是数据库高性能数据存储检索机制探析.pdf

    这篇文章探讨了云计算环境下,如何设计和构建一个高性能的分布式实时数据库系统,以便于高效地存储和检索大量数据。文章还讨论了分布式实时数据库的关键技术和特点,以及在处理数据时对性能和一致性的保障机制。 ...

    C# 批量插入和更新数据

    在数据库应用开发中,尤其是在处理大量数据的时候,批量插入和更新数据是提高效率的关键技术之一。传统的单条插入或更新方式在面对大数据量时,不仅耗时较长,而且可能会导致资源过度消耗,甚至引发性能瓶颈。因此,...

    大学课堂《数据库课后题答案》

    数据库是信息化社会中不可或缺的一部分,它负责存储、管理和分析大量数据。在大学的数据库课程中,学生会接触到一系列课后习题,旨在帮助他们深入理解数据库的概念和技术。本篇文章将详细解析这些课后题答案中的关键...

    成语数据库.rar

    MySQL是一种广泛使用的开源关系型数据库管理系统,它能够高效地存储和检索大量数据。将成语数据库转化为MySQL格式,意味着我们可以利用SQL语言进行查询、分析和管理这些成语信息。例如,可以轻松地找出某个成语的...

    java代码oracle数据库批量插入

    ### Java代码实现Oracle...这种方式相比于逐条插入数据,可以显著提升插入速度,特别是在需要插入大量数据的情况下效果更加明显。同时,通过禁用自动提交和批量处理的方式,减少了网络往返次数,进一步提高了执行效率。

    数据库讲义mysql06

    - **数据存储与检索**:MySQL能够存储大量数据,并通过SQL语言进行高效的数据检索和管理。 - **事务处理**:支持ACID(原子性、一致性、隔离性、持久性)特性,保证了数据的完整性和一致性。 - **数据备份与恢复**:...

    加入数据库mysql实现android注册登陆功能的客户端服务器源码与解析

    MySQL是一个流行的开源关系型数据库管理系统,能够处理大量的数据,且性能稳定。为了在服务器上连接MySQL,开发者通常会使用Java的JDBC(Java Database Connectivity)接口,这是一个标准的API,可以让我们在Java...

    delphi保存文件到数据库中

    - **性能考虑**:当处理大量文件时,需注意数据库操作的性能问题。 - **安全性**:在处理敏感文件或数据时,要考虑数据的安全性和完整性。 通过以上分析,我们不仅理解了如何在 Delphi 中将文件保存至数据库的具体...

Global site tag (gtag.js) - Google Analytics