Mybatis(四):crud操作
CRUD操作
一、CRUD
select
- 属性分析
id
- 命名空间中唯一的标识符
- 接口中的方法名与映射文件中的SQL语句ID 一一对应
parameterType
- 传入SQL语句的参数类型
resultType
- SQL语句返回值类型。【完整的类名或者别名】
-
直接在方法中传递参数
- 在接口方法的参数前加 @Param属性
- Sql语句编写的时候,直接取@Param中设置的值即可,不需要单独设置参数类型
/通过密码和名字查询用户 User selectUserByName(@Param("username") String username,@Param("pwd") String pwd); /* <select id="selectUserByNP" resultType="com.kuang.pojo.User"> select * from user where name = #{username} and pwd = #{pwd} </select> */
-
接口方法中传递Map(适用于方法参数较多的情况)
User selectUserByName(Map<String,Object> map);
<select id="selectUserByName" parameterType="map" resultType="com.kuang.pojo.User">
select * from user where name = #{username} and pwd = #{pwd}
</select>
//说明:需要传递参数类型,参数类型为map
Map<String, Object> map = new HashMap<String, Object>();
map.put("username","小明");
map.put("pwd","123456");
User user = mapper.selectUserByName(map);
// 说明:Map的 key 为 sql中取的值即可,没有顺序要求
insert,update,delete
- 所有的增删改操作都要提交事务
- 接口所有的普通参数,最好都写上@param参数,特别是多个参数的时候一定要写
- 根据业务需求,可以选用Map传递参数
- 为了规范操作,尽量把paramType 和resultType都加上
模糊查询
方法一:在java代码中添加通配符
string wildcardname = “%smi%”;
list<name> names = mapper.selectlike(wildcardname);
<select id=”selectlike”>
select * from foo where bar like #{value}
</select>
方法二:在sql语句中拼接通配符(不安全,会引起sql注入)
string wildcardname = “smi”;
list<name> names = mapper.selectlike(wildcardname);
<select id=”selectlike”>
select * from foo where bar like "%"#{value}"%"
</select>
方法三:
select * from foo where bar like concat('%',#{name},'%')
多表关联删除使用级联
外键建议建立索引,ON DELETE CASCADE 级联删除
ON UPDATE CASCADE 级联更新