发表于: 2017-08-23 23:33:46

2 918


今天完成的任务

1.理清了mybatis的环境配置

1)

List<Category> cs=session.selectList("S");/

声明一个Category的泛型,然后将sql语句导入到session中,并将返回的结果置入泛型,基于Catgory.xml把返回的数据库记录封装在Category对象中

这时候打印cs,得到是数据的地址,可以通过重载toString方法来实现其它输出(toString()方法是超类Object里的方法,在我们创造类的时候,其实就是默认为Object的子类toString()的意思是返回当前对象的字符串表达。

2.

for (Category c : cs) {//
   System.out.println(c.getName());
   System.out.println(c);
}

加强for循环,其本质就是暂时创建一个Category对象的集合c,c里面是cs的值,通过遍历cs的长度,达到循环的目的


通过调用Catepory类里面的getName方法,输出表的数据。


3.Catepory类


package com.how2java.pojo;

public class Category {
private int id;
   private String name;

   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;
   }

@Override
   public String toString() {//toString()的意思是返回当前对象的字符串表达
       return "Category{" + "id=" + id + ", name='" + name + '}';
   }

}

首先是创建两个变量,通过Set方法获得表返回的数据,通过get方法向表输入数据

toString覆盖了超类Object里的方法。



2.完成了CRUD


查询一个数据

List<Category> cs=session.selectList("S");
<select id="S" resultType="Category"><!--这条sql语句用id: listCategory 进行标示以供后续代码调用。resultType="Category" 表示返回的数据和Category关联起来,这里本应该使用的是 com.how2java.pojo.Category, 但是因为上一步配置了别名,所以直接使用Category就行了 -->
   select * from category_<!--里面定义了一条sql语句-->
</select>



增加一个数据

Category c = new Category();
c.setName("新增加的Category");//等等,还有一个问题,如果我删除一个加入的语句后,再增加的语句会在删除语句的后面
session.insert("addCategory",c);//增加,就是初始化一个Category的类,然后输入name的值,再然后把Category.xml对应的语句输入..
<insert id="addCategory" parameterType="Category" ><!--增加-->
   insert into category_ ( name ) values (#{name})<!--sql的增加语句是 insert into hero values 那个括号里的name是干啥的 -->
</insert>

这里有一个比较大的问题是

如果我调用session.insert("addCategory",c);为数据库添加一条语句后,如果此时我将添加的语句删除后,再次使用session.insert("addCategory",c);为数据库添加一条语句,这条语句的id会在删除的语句之后



也就是原本数据库


id     name


1         a


2         b


调用session.insert("addCategory",c);为数据库添加一条语句


id     name


1         a


2         b


3         c


这时删除这一条添加的语句,再次调用session.insert("addCategory",c);为数据库添加一条语句


数据库会变成

id     name


1         a


2         b


4        d




删除一个数据


c.setId(7);
session.delete("deleteCategory",c);//删除,其实调用insert方法也没差...就是便于理解,本质还是调用sql语句


<delete id="deleteCategory" parameterType="Category" ><!--删除-->
   delete from category_ where id= #{id}
</delete>

这里的问题是如果我调用delete()方法删除语句,但是如果使用insert()方法依旧可以删除语句,虽然不明原理但是想来mybatis也是和jdbc一样,也是用过sql语句对数据库进行操作。


修改一个数据

Category e= session.selectOne("getCategory",3);
e.setName("修改了的Category名稱");//修改
session.update("updateCategory",e);



<update id="updateCategory" parameterType="Category" ><!--修改-->
   update category_ set name=#{name} where id=#{id}
</update>

对获取到的数据进行关键字id上的修改(修改name)

setName为输入到sql语句上的方法



明天要做的任务,接着深入mybatis



遇到的问题

1.关于添加语句执行后id异常的问题

2.insert()方法和delete()方法对于添加和删除语句时没有区别的问题



收获


1.又看了一点基础,了解了泛型,toString等知识

2.更深的理解了mybatis


返回列表 返回列表
评论

    分享到