3. CRUD操作
3.1. namespace
配置文件中namespace中的名称为对应Mapper接口或者Dao接口的完整包名
3.2. select
- select标签是mybatis中最常用的标签之一
- select语句有很多属性可以详细配置每一条SQL语句
-
- id
-
-
- 命名空间中唯一的标识符
- 接口中的方法名与映射文件中的SQL语句ID 一一对应
-
-
- parameterType
-
-
- 传入SQL语句的参数类型 。【万能的Map,可以多尝试使用】
-
-
- resultType
-
-
- SQL语句返回值类型。【完整的类名或者别名】
-
使用万能的Map
- 在接口方法中,参数直接传递Map;
selectUserByNP2(Map<String,Object> map);
- 编写sql语句的时候,需要传递参数类型,参数类型为map
<select id="selectUserByNP2" parameterType="map" resultType="com.kuang.pojo.User">
select * from user where name = #{username} and pwd = #{pwd}
</select>
- 在使用方法的时候,Map的 key 为 sql中取的值即可,没有顺序要求!
Map<String, Object> map = new HashMap<String, Object>();
map.put("username","小明");
map.put("pwd","123456");
User user = mapper.selectUserByNP2(map);
总结:
如果参数过多,我们可以考虑直接使用Map实现,如果参数比较少,直接传递参数即可
3.3. insert、update、delete
类似Select
小结
- 所有的增删改操作都需要提交事务!
- 接口所有的普通参数,尽量都写上@Param参数,尤其是多个参数时,必须写上!
- 有时候根据业务的需求,可以考虑使用map传递参数!
- 为了规范操作,在SQL的配置文件中,我们尽量将Parameter参数和resultType都写上!
3.4. 模糊查询
模糊查询like语句该怎么写?
第1种:在Java代码中添加sql通配符。
string wildcardname = “%smi%”;
list<name> names = mapper.selectlike(wildcardname);<select id=”selectlike”>
select * from foo where bar like #{value}</select>
第2种:在sql语句中拼接通配符,会引起sql注入
string wildcardname = “smi”;
list<name> names = mapper.selectlike(wildcardname);<select id=”selectlike”>
select * from foo where bar like "%"#{value}"%"
</select>