新增
//在接口中定义方法
void savaAdmin(Admin admin);
<!--
useGeneratedKeys="true" keyProperty="id" keyColumn="id"
开启将生成的主键列,自动封装到对象中,在这里也就是把数据库中生成的主键赋给Admin对象中的id属性
-->
<insert id="savaAdmin" parameterType="Admin" useGeneratedKeys="true" keyProperty="id"
keyColumn="id">
insert into admin(account,password) value (#{account},#{password})
</insert>
-
useGeneratedKeys="true" keyProperty="id" keyColumn="id"
-
这几个属性的意思是开启将生成的主键列自动封装到对象中
-
useGeneratedKeys是否开启新增加的主键赋值到自己定义的类的属性中
-
keyProperty 接收主键的属性,也就是类中属性
-
keycolumn 数据库中列名
-
parameterType 参数类型
-
-
在新增的时候还没有分配主键号,所以在新增完后我们想立即拿到id号进行其它操作的时候就可以使用这几个属性
-
比如在新增管理员后保存管理员的爱好时,我们就可以通过这些属性在新增成功后立即拿到分配的主键号,接着进行修改操作,不需要再通过其它属性去查询主键号
-
测试:
@Test
public void save() {
SqlSession sqlSession = MybatisUtil.getSqlSession();
AdminDao1 adminDao = sqlSession.getMapper(AdminDao1.class);
Admin admin = new Admin();
admin.setAccount("zhangsan");
admin.setPassword("111");
adminDao.savaAdmin(admin);//保存管理员,立即拿到id
System.out.println(admin.getId());
//需要在所有的业务代码执行成功后,手动提交事务
sqlSession.commit();//提交事务
sqlSession.close();//关闭连接
}
- 注意:下面的新增、修改、删除操作基本都在事务控制中进行
修改
//定义方法
void updateAdmin(Admin admin);
<update id="updateAdmin" parameterType="Admin">
update admin set account=#{account},password=#{password}
where id = #{id}
</update>
测试:
@Test
public void update() {
SqlSession sqlSession = MybatisUtil.getSqlSession();
AdminDao1 adminDao = sqlSession.getMapper(AdminDao1.class);
Admin admin = new Admin();
admin.setId(3);
admin.setAccount("lisi");
admin.setPassword("111");
adminDao.updateAdmin(admin);
sqlSession.commit();//提交事务
sqlSession.close();
}
删除
//定义方法
void deleteAdminById(int id);
<delete id="deleteAdminById">
delete from admin where id = #{id};
</delete>
查询
<select id="唯一标识" resultType="返回结果集类型">
select * from ts_user where id= #{id}
</select>