热门搜索 :
考研考公
您的当前位置:首页正文

java数据交互(一)

来源:东饰资讯网

刚接触java,对它的写法及数据交互模模糊糊,经过几天的研究终于知道了。我学习的项目框架是用的SSH和swing,界面用的easyUI。

数据交互:jsp页面 ------ action(pageModel) ------ service(model)------ dao ------ 数据库

    页面调用action的方法,action调用service的方法,service调用dao封装的方法,dao的方法去操作数据库。

1.建数据库

我不知道别的框架调用action方法是什么样的,我这个调用是这样的:/personAction!addPerson.do

我练习用的是orcle,先说一下建数据库,我这个框架建modle对象,运行程序,会自动生成一个数据表。

person数据表.png

我的model是TTestPerson,贴一个model的代码:

@Entity
@Table(name = "T_PERSON", schema = "")

public class TTestPerson implements java.io.Serializable{

private String id;
private String personId;
private String name;
private Integer age;
private String address;
private String job;
private String salary;
private String company;
private Date addTime;

@Id
@Column(name = "id", length = 10,unique = true,nullable = false)
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}

@Column(name = "personId", length = 10,unique = true,nullable = false)
public String getPersonId() {
return personId;
}
public void setPersonId(String personId) {
this.personId = personId;
}

@Column(name = "name", length = 20)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

@Column(name = "age", length = 10)
pub;lic Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}

@Column(name = "address", length = 10)
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}

@Column(name = "job", length = 10)
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}

@Column(name = "salary", length = 10)
public String getSalary() {
return salary;
}
public void setSalary(String salary) {
this.salary = salary;
}

@Column(name = "company", length = 10)
public String getCompany() {
return company;
}
public void setCompany(String company) {
 = company;
}

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "addTime")
public Date getAddTime() {
return addTime;
}
public void setAddTime(Date addTime) {
this.addTime = addTime;
}
}

@Entity @Table(name = "T_PERSON", schema = "")是注解,其中name是表名。写好表字段及字段属性运行程序,就会发现数据库中新创建了一个T_PERSON表。

2.进行数据库增删改查操作

(1)建立所需的model

跟数据库进行操作的是model,也就是上面创建的TTestPerson。跟页面进行交互的是pageModel,所以还需创建一个TestPerson,只需写表字段和set()、 get()方法。其实model和pageModel也可以不用分开的,用一个model即跟页面进行交互,也跟数据库进行交互也是可以的。对TTestPerson进行复制粘贴就好了。

代码如下:

public class TestPerson implements java.io.Serializable{
private String id;
private String personId;
private String name;
private Integer age;
private String address;
private String job;
private String salary;
private String company;
private Date addTime;
public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getPersonId() {
return personId;
}
public void setPersonId(String personId) {
this.personId = personId;
}

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}

public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}

public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}

public String getSalary() {
return salary;
}
public void setSalary(String salary) {
this.salary = salary;
}

public String getCompany() {
return company;
}
public void setCompany(String company) {
 = company;
}

public Date getAddTime() {
return addTime;
}
public void setAddTime(Date addTime) {
this.addTime = addTime;
}
}

(2)写接口类并对其进行实现(即servise层)

接口类:在接口类里声明需要与数据库进行操作的方法,这里只介绍增删改查方法、我的接口类是TestPersonService。代码如下:

public interface TestPersonService {   
 /**    * 添加数据    */   
 public void add(TestPerson tp) throws ValidateFieldsException;   
 /**    * 编辑数据    */    
public void edit(TestPerson tp) throws ValidateFieldsException;   
 /**    * 删除数据    */   
 public void delete(String pid);   
 /**    * 查询数据(得到某个对象)    */    
public TestPerson get(String pid);   
 /**    * 查询集合    */    
public ListgetAllPersonlist();   
 /**    * 查询集合(带分页)    */    
public ListfindListPage(String pId);
}

接口实现类:声明的接口是一定要进行实现的。我的实现类是TestPersonServiceImpl。代码更能说话,同样看代码:

@Service("testService")//testService是action中创建的servise的名字

//注意:一定要实现自己的接口类(TestPersonService),否则找不到实现类

public class TestPersonServiceImpl extends BaseServiceImpl implements TestPersonService {   
  @Autowired
   private BaseDaoI<TTestPerson> dao;;  

  /**    * 添加数据    */   
 public void add(TestPerson tp) throws ValidateFieldsException {        
TTestPerson tTestPerson = new TTestPerson();       
 BeanUtils.copyProperties(tp, tTestPerson);      
  tTestPerson.setId(GetNewId(tp));     
   tTestPerson.setPersonId("1");       
 dao.save(tTestPerson);    
}   

 public String GetNewId(TestPerson tp) {       
 return dao.GetAutoIncreBm("T_PERSON", "id", 10);
    }   

 /**    * 编辑数据    */   
 public void edit(TestPerson tp) throws ValidateFieldsException{       
 TTestPerson tTestPerson = dao.get(TTestPerson.class,tp.getId());        BeanUtils.copyProperties(tp,tTestPerson);  
  }  

  /**    * 删除数据    */    
public void delete(String pid){
  TestPerson testPerson = new TestPerson();      
  String hql = String.format("from TTestPerson t where t.id=?",pid);        

TTestPerson tTestPerson = dao.get(hql, new Object[] { pid });     
  if (tTestPerson != null)        
{           
 dao.delete(tTestPerson);  
 } 
   }   

 /**    * 查询某个对象    */   
 public TestPerson get(String pid){     
   TestPerson testPerson = new TestPerson();       
 String hql = "from TTestPerson t where t.id=?";     
  TTestPerson tTestPerson = dao.get(hql, new Object[] { pid });       
   if (tTestPerson != null){           
   BeanUtils.copyProperties(tTestPerson,testPerson);     
     }          
return testPerson;    
}  

  /**    * 查询集合    */  
  public ListgetAllPersonlist() {       
 String hql = "from TTestPerson t";       
 Listlist = dao.find(hql);
 ListnewList = new ArrayList();       
 for (TTestPerson t : list) {          
  TestPerson testPerson = new TestPerson();           
 BeanUtils.copyProperties(t, testPerson);            
newList.add(testPerson);      
  }        
return newList; 
   }

servise中声明并实现了增删查改的方法,action中需要的时候直接调用就可以了。
下面来说说action。

3.action与servise的数据交互

直接看代码好了,这样更容易理解,哈哈哈

//添加数据
public void addPerson(){
        tp.setAddTime( getCurrentTime());
        Json j = new Json();
        try {
            testService.add(tp);
            j.setSuccess(true);
            j.setMsg("添加成功!");
        } catch (ValidateFieldsException e) {
            j.setMsg("添加失败");
        }
        writeJson(j);
    }

//根据ID删除数据
    public void  deletePerson(String id){
        Json json = new Json();
        try {
            testService.delete("0000000021");
            json.setSuccess(true);
            json.setMsg("删除成功!");
        }catch (Exception e)
        {
            logger.error(ExceptionUtil.getExceptionMessage(e));
            json.setMsg("删除失败!");
        }
        super.writeJson(json);
    }

//根据ID编辑数据
    public void  updatePerson(){
        TestPerson testPersoned = testService.get("0000000007");
        testPersoned.setName(request.getParameter("name"));
        testPersoned.setAge(Integer.parseInt(request.getParameter("age")));
        testPersoned.setCompany(request.getParameter("company"));
        testPersoned.setSalary(request.getParameter("salary"));
        testPersoned.setAddress(request.getParameter("address"));
        testPersoned.setJob(request.getParameter("job"));
        Json json = new Json();
        try {
            testService.edit(testPersoned);
            json.setSuccess(true);
            json.setMsg("编辑成功!");
        }catch (Exception e)
        {
            logger.error(ExceptionUtil.getExceptionMessage(e));
            json.setMsg("编辑失败!");
        }
        super.writeJson(json);
    }

//根据ID查询数据
    public void findOneData(){
        Json j = new Json();
        try {
            TestPerson testPerson = testService.get("0000000001");
            super.writeJson(testPerson);
            j.setSuccess(true);
        } catch (Exception e) {
            logger.error(ExceptionUtil.getExceptionMessage(e));
            j.setMsg("获取失败!");
        }
    }

//查询所有数据
    public void findListData(){
        List<TestPerson> list = testService.getAllPersonlist();
        super.writeJson(list);
    }

    //获取当前时间
    public Date getCurrentTime()
    {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式
        Date currentDate = new Date();
        try
        {
            // new Date()为获取当前系统时间
              currentDate = df.parse(df.format(new Date()));
        }
        catch (ParseException e)
        {
            e.printStackTrace();
        }
        return currentDate;
    }

更新数据方法中有这种代码:

testPersoned.setName(request.getParameter("name"));

这是根据html中input输入框的name来获取输入框的值。

好了,今天就到这里吧,困死宝宝了,晚上做个好梦...

Top