上一节写了使用mybatis返回整个表单,本节在上一节的基础上实现增删改查。
由于mybatis的便捷性,添加sql语句只需要修改的地方有三个:
1、接口
2、接口xml文件
3、test文件
1、查询用户
(1)在接口中添加方法getIdData:
public interface Dao {
List<Myda> getData(); //获得表单
Myda getIdData(int id); //根据用户id查询
}
(2)接口xml文件中添加sql语句:
其中parameterType为参数类型。
#{} 为占位符:#{}速度快,能防止sql注入,是占位符方式,先预编译,然后填充参数,字符串格式,相当于填空题 用户名=(___),参数只是下划线上的内容;
${}是直接拼接到语句上,执行语句,对于上面那道填空题 ,这种方式需要自己拼括号和参数,但是也可以拼接想执行的任何语句,也就是传说中的sql注入。
<select id="getIdData" resultType="com.pht.dao.Myda" parameterType="int">
select * from majinbuu1.pht_01 where id_0=#{id}
</select>
(3)在test文件中测试:
@Test
public void getid(){
//头尾语句都不变,即获取sqlsession对象以及关闭对象
SqlSession obj=Utils.getsqlseesion();
Dao dao=obj.getMapper(Dao.class);
Myda data_id=dao.getIdData(1);
System.out.println(data_id);
obj.close();
}
(4)查询结果:
2、插入一个用户
与查询类似:
void insertUser(Myda user); //添加
values参数名称要与实体类中的属性名称对应(细节很多):
<insert id="insertUser" parameterType="com.pht.dao.Myda">
insert into majinbuu1.pht_01 (id_0,name_0) values (#{id_0},#{name_0})
</insert>
直接在insertUser中new一个Myda对象:
@Test
public void inserttest(){
SqlSession obj=Utils.getsqlseesion();
Dao dao=obj.getMapper(Dao.class);
dao.insertUser(new Myda("obama",5));
obj.close();
}
以上可以实现添加吗?不行,增删改需要提交事务!!!
因此,在test中添加提交事务语句:
@Test
public void inserttest(){
SqlSession obj=Utils.getsqlseesion();
Dao dao=obj.getMapper(Dao.class);
dao.insertUser(new Myda("obama",5));
obj.commit();
obj.close();
}
添加成功:
3、修改用户
void updateUser(Myda user); //修改用户名
<update id="updateUser" parameterType="com.pht.dao.Myda">
update majinbuu1.pht_01 set name_0=#{name_0} where id_0=#{id_0};
</update>
@Test
public void upd(){
SqlSession obj=Utils.getsqlseesion();
Dao dao=obj.getMapper(Dao.class);
dao.updateUser(new Myda("trump",5));
obj.commit();
obj.close();
}
结果:
4、删除用户:
void deletUser(int id);
<delete id="deletUser" parameterType="int">
delete from majinbuu1.pht_01 where id_0=#{id_0}
</delete>
@Test
public void deletetest(){
SqlSession obj=Utils.getsqlseesion();
Dao dao=obj.getMapper(Dao.class);
dao.deletUser(5);
obj.commit();
obj.close();
}