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字段为空则不添加,有值则添加的场景,处理起来很不方便
mybatis之@Select、@Insert、@Delete、@Param的更多相关文章
- mybatis select/insert/update/delete
		
这里做了比较清晰的解释: http://mybatis.github.io/mybatis-3/java-api.html SqlSession As mentioned above, the Sql ...
 - 关于MyBatis mapper的insert, update, delete返回值
		
这里做了比较清晰的解释: http://mybatis.github.io/mybatis-3/java-api.html SqlSession As mentioned above, the Sql ...
 - Use Select To Generate Any Insert/Delete/Update Statement
		
If you don't have the permission to generate script according to an existing db, but you have the re ...
 - C++使用Mysql的详细步骤及各个常用方法的代码演示:select,insert,update,delete
		
这几天一直在学习C++下使用Mysql的方法及其中各种的问题,也看了很多Mysql的API函数,当然自己看的还是很基础的.其实对于每种数据库的操作,基本的方法都是非常类似的,大多都是connect,s ...
 - using the library to generate a dynamic SELECT or DELETE statement  mysqlbaits   xml配置文件  与 sql构造器  对比
		
https://github.com/mybatis/mybatis-dynamic-sql MyBatis Dynamic SQL What Is This? This library is ...
 - mybatis源码专题(2)--------一起来看下使用mybatis框架的insert语句的源码执行流程吧
		
本文是作者原创,版权归作者所有.若要转载,请注明出处.本文以简单的insert语句为例 1.mybatis的底层是jdbc操作,我们先来回顾一下insert语句的执行流程,如下 执行完后,我们看下数据 ...
 - 带有OUTPUT的INSERT,DELETE,UPDATE
		
原文地址:http://blog.sina.com.cn/s/blog_71460d950100nld2.html OUTPUT是SQL SERVER2005的新特性.可以从数据修改语句中返回输出.可 ...
 - mybatis 使用@Select 注解,因为字符编码不一致导致mybatis 报错
		
使用 mybatis 的@Select 注解, @Select({ "<script>select " + ALL_COLUMNS + " from &quo ...
 - sqlserver触发器insert,delete,update
		
Create Trigger [dbo].[upemployee_kefyu_sale] on [dbo].[employee] for update as if update(FullName) b ...
 - OGG for sqlserver engryption && insert/delete
		
OGG for sqlserver engryption && insert/delete 1. 源端操作 1.1 获取key 作为数据库用户密码加密 d:\GoldenGate\gg ...
 
随机推荐
- telerik:RadGrid 在表格中编辑更新数据
			
对于 telerik 这个框架 我也不是很熟悉 也是刚刚开始学习 有兴趣的可以去官网看下 https://www.telerik.com/ 啥也不多说 直接上代码 首先是 telerik:RadGr ...
 - 数据导出之winform导出word(三)
			
本篇文章补充讲解上篇文章中word模板的制作. ① 新建一个word文档 ② 定位到要插入书签的位置 ③ 菜单栏 “插入” -> “书签”,输入书签名,点击“添加” 可以多处位置使用同样的书签名 ...
 - java程序中获取kerberos登陆hadoop
			
本文由作者周梁伟授权网易云社区发布. 一般我们在使用kbs登陆hadoop服务时都直接在shell中调用kinit命令来获取凭证,这种方式简单直接,只要获取一次凭证之后都可以在该会话过程中重复访问.但 ...
 - Android Studio - 如何停止logcat不断滚动信息?
			
今天升级了一下Android Studio,升级之后准备调试程序,发现logcat里面不断滚动各种信息,我想调试程序非常困难了!滚动信息截图: 如何阻止自动出现的各种滚动信息,只显示我正在开发工程的调 ...
 - 操作系统(Operating System,OS)
			
操作系统(Operating System,OS) 是配置在计算机硬件上的第一层软件,是对计算机硬件系统的首次扩充,是一个计算机系统最基础,也是最重要的系统软件. 操作系统的作用 1 实现对计算机资源 ...
 - 话谈C#第一天
			
今天是第一次接触C#,由于长时间的做Java开发,突然转到C#非常的不自然,但是也有了一些收获,给大家分享一下 using System; using System.Collections.Gener ...
 - 可方便扩展的JIRA Rest Web API的封装调用
			
JIRA是一个缺陷跟踪管理系统,被广泛应用于缺陷跟踪.客户服务.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领域,当我们需要把第三方业务系统集成进来时,可以调用他的API. JIRA本身的A ...
 - 在vue项目中安装使用Mint-UI
			
一.Mint UI 是 由饿了么前端团队推出的 一个基于 Vue.js 的移动端组件库,具有以下特性: 使用文档: http://mint-ui.github.io/#!/zh-cn Mi ...
 - linux安装git,linux安装jenkins
			
首先是两个地址,分别是git的版本下载地址,jenkins的下载地址 https://mirrors.edge.kernel.org/pub/software/scm/git/ http://mirr ...
 - Redis数据类型之SDS简单动态字符串
			
一,简单的动态字符串 1,Redis自己构建了一种名为简单动态字符串的抽象类型,并将SDS用作Redis的默认字符串表示, 2,在redis的数据库里面,包含字符串值的键值对在底层都是由SDS实现的 ...