Mybatis(四):crud操作

CRUD操作

一、CRUD

select

  • 属性分析

​ id

  • 命名空间中唯一的标识符
  • 接口中的方法名与映射文件中的SQL语句ID 一一对应

parameterType

  • 传入SQL语句的参数类型

resultType

  • SQL语句返回值类型。【完整的类名或者别名】
  • 直接在方法中传递参数

    1. 在接口方法的参数前加 @Param属性
    2. 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 级联更新

猜你喜欢

转载自www.cnblogs.com/dreamzone/p/12344390.html