3.mybatis的CRUD
1.增
1.1.dao层接口
public interface UserDao {
...
/*插入记录*/
int intsertUser(User user);
...
}
1.2.绑定的mapper.xml
<!--插入语句-->
<insert id="intsertUser" parameterType="cn.com.wmd.pojo.User">
//重点:方法传入的是对象,sql中根据对象的属性直接获取
insert into public.user (id,name,pwd) values (#{id},#{name},#{pwd})
</insert>
此处需要讲解的一点是:如果表中的id是自增主键,即在插入语句中无需传入id值!但是我们想返回插入记录的id值应当如何做呢!
使用useGeneratedKeys和keyProperty
useGeneratedKeys的作用是允许 JDBC 支持自动生成主键
keyProperty对应的是Java对象的属性名(不是数据库中的字段名)
<insert id="insertPerson" parameterType="com.cn.springcloud.entity.Person" useGeneratedKeys="true" keyProperty="id">
insert into mybatis.person(name, age, message) values (#{name},#{age},#{message})
</insert>
这样的测试结果是:
会将插入记录的id值,封装到person对象中的id属性里,可以使用person.getId()获取该id值!
2.删
2.1dao层接口
public interface UserDao {
...
/*删除*/
int deleteUser(int id);
...
}
2.2绑定的mapper.xml
<!--删除-->
<delete id="deleteUser" parameterType="int">
delete from public.user where id=#{id}
</delete>
3.改
2.1dao层接口
public interface UserDao {
...
/*更新用户信息*/
int updateUser(User user);
...
}
2.2绑定的mapper.xml
<!--更新-->
<update id="updateUser" parameterType="cn.com.wmd.pojo.User">
update public.user set pwd=#{pwd} where id=#{id}
</update>
4.3.查
2.1dao层接口
public interface UserDao {
...
/*多参数查询*/
List<User> getUserList(int id,String name);
...
}
2.2绑定的mapper.xml
<!--多参数查询-->
<select id="getUserList" resultType="cn.com.wmd.pojo.User">
//重点:
1.多参数时可以用arg0(arg[下标]代表具体的那个数值,下标从0开始)
2.多参数可以用param1(param[小标]代表具体的那个数值,下标从1开始)
select * from public.user t where t.id = #{arg0} and t.name = #{arg1}
</select>
4.3.1查询的第二种用法(标签)
2.1dao层接口
public interface UserDao {
...
/*多参数查询*/
重点1:此处用标签@Param表明入参
List<User> getUserList(@Param("id") int id, @Param("name") String name);
...
}
2.2绑定的mapper.xml
<!--多参数查询-->
<select id="getUserList" resultType="cn.com.wmd.pojo.User">
//重点2:此处就可以使用@param绑定的名称了
select * from public.user t where t.id = #{id} and t.name = #{name}
</select>