dom4j 학생 CRUD 완성
16813 단어 xml
1.DTO 클래스 학생 하기
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)>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
XML 소개나중에 나 자신과 물론 XML 😀에 대해 배워야 하는 모든 사람을 위해 참조로 사용할 수 있도록 짧은 소개를 작성하고 싶습니다. JSON을 JavaScript Objects 형태의 일반 텍스트로 데이터를 전송하는 방...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.