`
y8820960
  • 浏览: 116389 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

dom4j 完成学生的CRUD

    博客分类:
  • XML
xml 
阅读更多
转自:http://blog.csdn.net/lenotang/article/details/2809578
1.做一个DTO类Student
package  com.wepull.student.model;

 

public class Student {

 

       private int id;

       private String name;

       private int age;

 

       public int getId() {

              return id;

       }

 

       public void setId(int id) {

              this.id = id;

       }

 

       public String getName() {

              return name;

       }

 

       public void setName(String name) {

              this.name = name;

       }

 

       public int getAge() {

              return age;

       }

 

       public void setAge(int age) {

              this.age = age;

       }

 

}

2.做一个查询条件类Cond
package  com.wepull.student.model;

 

/**

 * @author leno

 * javabean风格的简单查询条件类

 */

public class Cond {

 

       private String colName;

       private String operation;

       private String colValue;

      

       public String getColName() {

              return colName;

       }

       public void setColName(String colName) {

              this.colName = colName;

       }

       public String getOperation() {

              return operation;

       }

       public void setOperation(String operation) {

              this.operation = operation;

       }

       public String getColValue() {

              return colValue;

       }

       public void setColValue(String colValue) {

              this.colValue = colValue;

       }

      

      

}


3.做一个操作学生对象的DAO的接口
package  com.wepull.student.model;

 

import java.util.List;

 

public interface IStudentDAO {

 

       public void insert(Student stu);

       public void edit(Student stu);

       public void del(int id);

       public Student findById(int id);

       public int getRecords();

       public List<Student> findAll();

       public List<Student> findAll(int page,int pageSize);

       public List<Student> findAll(List<Cond> cond,int page,int pageSize);

}

4. 做一个操作学生对象的DAO的实现类,该类就是重点
package  com.wepull.student.model;
public class StudentDaoImpl implements IStudentDao
{
    private String xmlPath = "student.xml";
    
    private Document doc;
    
    {
        init();
    }
    
    /**
     * 初始化工作,xml文件存在而读取
     * 不存在则按照一定格式在当前工程下创建
     */
    public void init()
    {
        File file = new File(xmlPath);
        if (file.exists())
        {
            SAXReader reader = new SAXReader();
            try
            {
                doc = reader.read(file);
            }
            catch (DocumentException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        else
        {
            doc = DocumentHelper.createDocument();
            //使用addDocType()方法添加文档型说明
            doc.addDocType("student", null, "student.dtd");
            Element root = doc.addElement("students");
            root.addComment("student's information");
            overRideXml();
        }
    }
    
    public StudentDaoImpl()
    {
        // TODO Auto-generated constructor stub
    }
    
    public StudentDaoImpl(String xmlPath)
    {
        
    }
    
    public void delete(int id)
    {
        // TODO Auto-generated method stub
        Element element = findElementById(id);
        if (null != element)
        {
            doc.getRootElement().remove(element);
            overRideXml();
        }
    }
    
    public void edit(Student stu)
    {
        // TODO Auto-generated method stub
        int id = stu.getId();
        Element element = findElementById(id);
        if (null != element)
        {
            element.element("name").setText(stu.getName());
            element.element("age").setText(String.valueOf(stu.getAge()));
            overRideXml();
        }
    }
    
    @SuppressWarnings("unchecked")
    public List<Student> findAll()
    {
        // TODO Auto-generated method stub
        List<Student> list = new ArrayList<Student>();
        Element root = doc.getRootElement();
        Iterator it = root.elementIterator();
        while (it.hasNext())
        {
            //TODO attributeValue和elementText区别
            Element element = (Element)it.next();
            Student stu = new Student();
            stu.setId(Integer.parseInt(element.attributeValue("id")));
            stu.setName(element.elementText("name"));
            stu.setAge(Integer.parseInt(element.elementText("age")));
            list.add(stu);
        }
        return list;
    }
    
    @SuppressWarnings("unchecked")
    public List<Student> findAll(int page, int pageSize)
    {
        // TODO Auto-generated method stub
        List<Student> list = new ArrayList<Student>();
        Element root = doc.getRootElement();
        List<Element> allList = root.elements();
        int size = allList.size();
        int maxPage = (size + pageSize - 1) / pageSize;
        if (0 == size || page < 1 || page > maxPage)
        {
            return list;
        }
        int start = (page - 1) * pageSize;
        int end = start + pageSize;
        if(end > size) 
        {
            end = allList.size();
        }
        List<Element> eleList = allList.subList(start, end);
        Iterator<Element> it = eleList.iterator();
        while(it.hasNext()) 
        {
            Element element = it.next();
            Student stu = new Student();
            stu.setId(Integer.parseInt(element.attributeValue("id")));
            stu.setName(element.elementText("name"));
            stu.setAge(Integer.parseInt(element.elementText("age")));
            list.add(stu);
        }
        return list;
    }
    
   /**

        * 分页并且按照条件查询学生数据(有待加强和优化)

        */

       @SuppressWarnings("unchecked")

       public List<Student> findAll(List<Cond> conds, int page, int pageSize) {

              List<Student> list = new ArrayList<Student>();

              Element root = doc.getRootElement();

              List<Element> allList = new ArrayList<Element>();

              Iterator<Element> allIt = root.elementIterator();

              while (allIt.hasNext()) {

                     Element element = allIt.next();

                     String id = element.attributeValue("id");

                     String name = element.elementText("name");

                     String age = element.elementText("age");

                     for (int i = 0; i < conds.size(); i++) {

                            Cond cond = conds.get(i);

                            String colName = cond.getColName();

                            String operation = cond.getOperation();

                            String colValue = cond.getColValue();

                            if ("id".equals(colName)) {

                                   if (operation.equals("=")) {

                                          if (!id.equals(colValue)) {

                                                 break;

                                          }

                                   }

                            } else if ("name".equals(colName)) {

                                   if (operation.equals("=")) {

                                          if (!name.equals(colValue)) {

                                                 break;

                                          }

                                   } else if (operation.equals("like")) {

                                          if (!name.contains(colValue)) {

                                                 break;

                                          }

                                   }

                            } else if ("age".equals(colName)) {

                                   if (operation.equals("=")) {

                                          if (!age.equals(colValue)) {

                                                 break;

                                          }

                                   }

                            }

                     }

                     allList.add(element);

              }

              int size = allList.size();

              int maxPage = (size + pageSize - 1) / pageSize;

              if (size == 0 || page < 1 || page > maxPage) {

                     return list;

              }

              int start = (page - 1) * pageSize;

              int end = start + pageSize;

              if (end > size) {

                     end = allList.size();

              }

              List<Element> eleList = allList.subList(start, end);

              Iterator<Element> it = eleList.iterator();

              while (it.hasNext()) {

                     Element element = it.next();

                     Student stu = new Student();

                     stu.setId(Integer.parseInt(element.attributeValue("id")));

                     stu.setName(element.elementText("name"));

                     stu.setAge(Integer.parseInt(element.elementText("age")));

                     list.add(stu);

              }

              return list;

       }
    
    public Student findById(int id)
    {
        // TODO Auto-generated method stub
        Student stu = null;
        Element element = findElementById(id);
        if(element != null) 
        {
            stu = new Student();
            stu.setId(id);
            stu.setName(element.elementText("name"));
            stu.setAge(Integer.parseInt(element.elementText("age")));
        }
        return stu;
    }
    
    public int getRecords()
    {
        // TODO Auto-generated method stub
        return doc.getRootElement().elements().size();
    }
   
    public void insert(Student stu)
    {
        // TODO Auto-generated method stub
        int currId = getMaxId() + 1;
        Element root = doc.getRootElement();
        Element student = root.addElement("student");
        student.addAttribute("id", String.valueOf(currId));
        Element name = student.addElement("name");
        name.setText(stu.getName());
        Element age = student.addElement("age");
        age.setText(String.valueOf(stu.getAge()));
        overRideXml();
    }
    
    @SuppressWarnings("unchecked")
    public Element findElementById(int id)
    {
        Iterator<Element> it = doc.getRootElement().elementIterator("student");
        while(it.hasNext())
        {
            Element element = it.next();
            if(String.valueOf(id).equals(element.attributeValue("id"))) 
            {
                return element;
            }
        }
        return null;
    }
    @SuppressWarnings({"unchecked", "unchecked"})
    private int getMaxId() 
    {
        int maxId = 0;
        Element root = doc.getRootElement();
        Iterator<Element> it = root.elementIterator("student");
        while(it.hasNext()) 
        {
            Element element = (Element) it.next();
            String id = element.attributeValue("id");
            if(maxId < Integer.parseInt(id)) 
            {
                maxId = Integer.parseInt(id);
            }
        }
        
        System.out.println("maxId" + maxId);
        return maxId;
    }
    private void overRideXml() 
    {
        XMLWriter writer = null;
        try
        {
            writer = new XMLWriter(new FileOutputStream(xmlPath),OutputFormat.createPrettyPrint());
            writer.write(doc);
            writer.close();
        }
        catch (UnsupportedEncodingException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (FileNotFoundException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
      public static void main(String[] args) {

              IStudentDAO dao = new StudentDAO();

              // System.out.println(dao.getRecords());

              // for (int i = 0; i < 40; i++) {

              // Student stu = new Student();

              // //stu.setId(2);

              // stu.setName("www");

              // stu.setAge(233);

              // dao.insert(stu);

              // }

              List<Cond> conds = new ArrayList<Cond>();

              for (int i = 0; i < 1; i++) {

                     Cond cond = new Cond();

                     cond.setColName("name");

                     cond.setOperation("like");

                     cond.setColValue("1");

                     conds.add(cond);

              }

              List<Student> list = dao.findAll(conds, 1, 20);

              Iterator<Student> it = list.iterator();

              while (it.hasNext()) {

                     Student stu = it.next();

                     System.out.println(stu.getId() + " " + stu.getName());

              }

       }
}

5. 将如下student.dtd文件放在当前工程目录下
<!ELEMENT students (student*)>

<!ELEMENT student (name,age)>

<!ATTLIST student id CDATA #IMPLIED>

<!ELEMENT name (#PCDATA)>

<!ELEMENT age (#PCDATA)>
分享到:
评论

相关推荐

    Dom4j实现xml的CRUD

    总结,DOM4j是一个强大且易用的Java XML处理库,能够方便地完成XML文件的CRUD操作。结合Servlet技术,可以轻松地将这些操作集成到Web应用中,为用户提供对XML数据的动态管理功能。了解并熟练掌握DOM4j,对于处理XML...

    dom4j 包含例子 各种增删改查

    "2012-4-10 有关 xml dom4j的 crud"可能是另一个教程或者笔记,详细讲解了如何利用DOM4J进行XML的CRUD操作。这个文件可能包含了详细的步骤和代码示例,对于学习DOM4J非常有帮助。 "自己写的 dom4j的例子"很显然是...

    dom4j.doc技术文档 教程

    使用DOM4J进行基本的CRUD(创建、读取、更新、删除)操作。 **查询操作** 假设我们要查询当前的`bookstore.xml`文件中所有的`book`元素,并获取每个`book`元素的`category`属性值以及`author`子元素中的文本信息:...

    Dom4j对xml文件做增删改查(使用分层思想)

    综上所述,这个案例通过Dom4j实现了XML文件的CRUD操作,并采用分层架构来组织代码,提高了代码的可读性和可维护性。在实际开发中,这样的设计模式能够帮助我们更好地管理复杂的应用程序,同时利用Dom4j的强大功能...

    学生信息crud java代码

    本项目“学生信息CRUD Java代码”是针对初学者设计的,旨在帮助他们理解如何使用Java连接数据库,并进行学生信息的相关操作。下面我们将详细探讨这个项目涉及的知识点。 1. **Java编程基础**: - Java是一种面向...

    MyBatis基本CRUD与动态SQL(带log4j.properties).zip

    本资料主要围绕MyBatis的基本CRUD操作和动态SQL展开,同时包含了日志配置文件`log4j.properties`,用于帮助调试和优化应用程序的日志输出。 首先,MyBatis的核心概念是Mapper接口和XML映射文件。在创建CRUD操作时,...

    XML实现的增删改查(CRUD)功能实例

    在这个"XML实现的增删改查(CRUD)功能实例"中,我们将深入探讨如何使用DOM4J库来执行这些基本操作。 1. **增加(Create)**: 在XML中添加新的元素或属性属于创建操作。DOM4J提供了Element类,可以用来创建新的节点...

    SWING做的学生信息CRUD

    本项目“SWING做的学生信息CRUD”显然是一个基于Swing的系统,主要用于实现对学生信息的创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作,这些是数据库管理中最基本的功能。 首先,让我们深入...

    CRUD CRUD CRUD

    在IT行业中,CRUD操作广泛应用于各种应用程序,从简单的数据库管理工具到复杂的Web应用,都离不开这四种基本操作。 1. **Create(创建)**: 创建是指在数据库中插入新的记录。例如,在一个用户管理系统中,当注册新...

    express学生信息管理系统(CRUD).zip

    《Express学生信息管理系统(CRUD)详解》 Express,作为Node.js框架的杰出代表,以其简洁易用的API和强大的功能赢得了广大开发者的青睐。在本项目“express学生信息管理系统(CRUD)”中,我们将深入探讨如何利用...

    使用jsp,servlet,jdbc,完成一个简单的学生系统crud.zip

    4. 删除学生:用户选择删除学生时,Servlet会根据ID发送DELETE SQL,执行删除操作,然后通知JSP刷新数据列表。 除了基本的CRUD操作,你还需要考虑错误处理和安全性。例如,确保输入验证,防止SQL注入;使用预编译的...

    第四部分、Spring MVC完成CRUD.rar

    在本资源"第四部分、Spring MVC完成CRUD.rar"中,我们主要探讨的是Spring MVC框架在实际项目开发中的应用,特别是在实现CRUD(创建、读取、更新、删除)操作中的详细过程。Spring MVC是Java Web开发中常用的一个模块...

    Springboot和Jpa实现学生CRUD操作代码实例

    Springboot和Jpa实现学生CRUD操作代码实例 Springboot和Jpa是目前非常流行的技术栈,广泛应用于企业级项目中。该篇文章主要介绍了使用Springboot和Jpa实现学生CRUD操作代码实例,通过详细的示例代码,帮助读者快速...

    使用javaweb+jsp+MySQL实现学生管理CRUD+Excel导入功能

    代码实现功能: 使用javaweb+jsp实现CRUD+Excel导入功能,无过多依赖。 1、完成学生信息的新增操作 2、完成学生信息的编辑操作 ...4、完成学生信息的删除操作 5、完成学生信息的导入操作 数据库使用的MySQL8.0

    extjs4mvc的crud

    在"extjs4mvc的crud"这个主题中,我们将深入探讨如何使用ExtJS 4的Model-View-Controller(MVC)架构来实现货物处理的创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作。 首先,了解MVC模式是...

    面向配置的CRUD框架,基于d2-admin的d2-crud,简化d2-crud配置,快速开发crud功能;支持远程数据字典,国

    面向配置的CRUD框架,基于d2-admin的d2-crud,简化d2-crud配置,快速开发crud功能;支持远程数据字典,国际手机号校验,alioss、腾讯云cos、七牛云文件上传,省市区选择,权限管理,代码生成

    【自虐1.2】Srping+MyBatis完成CRUD

    【自虐1.2】Spring+MyBatis完成CRUD 在本文中,我们将深入探讨如何结合Spring框架和MyBatis轻量级持久层框架来实现数据库的基本操作,包括创建(Create)、读取(Read)、更新(Update)和删除(Delete),简称为...

    Dapper.SimpleCRUD

    **Dapper.SimpleCRUD** 是一个针对Dapper扩展的库,专为简化常见的数据库操作而设计,如创建、读取、更新和删除(CRUD)数据。Dapper本身是一个轻量级、高效的.NET ORM(对象关系映射)工具,而**Dapper.SimpleCRUD*...

    jsp 实现的CRUD

    **JSP实现的CRUD操作详解** 在Web开发中,CRUD(Create, Read, Update, Delete)是最基本的数据操作,广泛应用于各种业务系统。本项目以JSP(JavaServer Pages)技术为核心,实现了对MySQL数据库的CRUD操作,旨在...

    C#用VS实现CRUD操作(作业).zip

    在本项目"C#用VS实现CRUD操作(作业)"中,我们将探讨如何使用Microsoft Visual Studio(VS)作为集成开发环境(IDE),结合C#语言来实现数据库的基本 CRUD(Create, Read, Update, Delete)操作。CRUD是任何数据...

Global site tag (gtag.js) - Google Analytics