zoukankan      html  css  js  c++  java
  • mybatis之@Select、@Insert、@Delete、@Param

    之前学习的时候,看到别人在使用mybatis时,用到@Select、@Insert、@Delete、@Param这几个注解,故楼主研究了一下,在这里与大家分享

    当使用这几个注解的时候,可以省去写Mapper.xml等一系列配置文件

    首先来看个例子:

    import org.apache.ibatis.annotations.Delete;
    import org.apache.ibatis.annotations.Insert;
    import org.apache.ibatis.annotations.Param;
    import org.apache.ibatis.annotations.Select;
    import org.apache.ibatis.annotations.Update;
    
    import com.xwj.entity.UserEntity;
    
    public interface UserMapper {
        
        /**
         * 查询
         */
        @Select("SELECT id, last_name lastName, email, age FROM xwj_user WHERE id = #{id} and last_name like '%${lastName}%' ")
        UserEntity findById(@Param("id") String id, @Param("lastName") String name);
    
        /**
         * 新增
         */
        @Insert("INSERT INTO xwj_user(id, last_name, age) VALUES(#{id}, #{lastName}, #{age})")
        int addUser(@Param("id") String id, @Param("lastName") String name, @Param("age") Integer age);
        
        /**
         * 更新
         */
        @Update("UPDATE xwj_user SET last_name = #{lastName} WHERE id = ${id}")
        int updateUser(@Param("id") String id, @Param("lastName") String name);
        
        /**
         * 删除
         */
        @Delete("DELETE FROM xwj_user WHERE id = ${id}")
        int deleteUser(@Param("id") String id);

    还有实体类:

    public class UserEntity {
        
        private String id;
        
        private String lastName;
        
        private String email;
        
        private int age;
        
        //TODO set跟get方法略。。。
        
    }

    这里解释一下:

      1、@Select(...)注解的作用就是告诉mybatis框架,执行括号内的sql语句

      2、id, last_name lastName, email, age  对于实体类字段与数据库字段表不一致时,得加上别名。如last_name是数据库字段,lastName是实体类字段

           这段代码的作用就是实现数据库字段名和实体类属性的一一映射。如果没有加别名,则在查询出的entity中,这个字段是null

      3、WHERE id = #{id} and last_name like '%${lastName}%' 表示sql语句要接受2个参数:id跟lastName。#{..}(或${..})中的名称得跟@Param(..)中的名称对应

        这就是@Param注解的妙用,正确的将参数传入sql语句中

      4、使用了@Param注解来声明参数时,使用 #{} 或 ${}来接收参数的方式都可以

      5、@Insert、@Update、@Delete的用法跟@Select类似

      楼主在使用的过程中,发现就insert语句写在@Update注解中也是可以的

      虽然直接使用注解很方便,不过楼主发现,如果在添加查询语句时,如a字段为空则不添加,有值则添加的场景,处理起来很不方便

  • 相关阅读:
    将数据导入第三方系统
    希望可以看到自己的积分
    WF疑惑
    GUID
    wf HandlExternalEvent传递参数到自定义属性中
    今天做了一天的网站,烦恼
    WF 参数传递,今天终于把WORKFLOW的参数回传回来了
    今天开始在这里写博了
    寻求帮助,怪问题
    WF终于有了一点入门的感觉
  • 原文地址:https://www.cnblogs.com/xuwenjin/p/8848816.html
Copyright © 2011-2022 走看看