增:@Insert("insert into  t_user (`last_name`, `sex`) values(#{lastName}, #{sex})")
 
删:@Delete("delete  from t_user where id = #{id}")
 
改:@Update("update  t_user set last_name = # {lastName}, sex = #{sex} where id = #{id} ")
 
查: @Select("select  id, last_name , sex from t_user where id = #{id}")
 
mybatis的参数传递:
1.传递一个普通数据类型  :#{变量名}与传入的参数名要一样(推荐)
代码:public User queryUserById(int id); 
select `id`,`last_name` lastName,`sex` from t_user where id = #{id}
 
2.传递多个普通数据类型
方法1在方法的参数是多个普通数据类型的情况,传递的参数的方式是使用#{ param1 }、#{param2} ……
代码:public List<User> queryUsersByNameAndSex(String name, int sex);
select `id`,`last_name` lastName,`sex` from t_user where last_name like #{param1} and sex = #{param2}
方法2 @Param注解命名参数(推荐)
public List<User> queryUsersByNameAndSex(@Param("name") String name,@Param("sex") int sex);
select `id`,`last_name` lastName,`sex` from t_user where last_name like #{name} and sex = #{sex}
 
3.传递一个Map对象作为参数 :以#{mapKey}的方式输出参数值。
Map<String, Object>param = new HashMap<String, Object>();
param.put("name", "%bbb%");
param.put("sex", 1);
以#{mapKey}的方式输出参数值。
代码:public List<User> queryUsersByMap(Map<String, Object> param);
select `id`,`last_name` lastName,`sex` from t_user where last_name like #{name} and sex = #{sex}
 
4.传递一个Pojo对象作为参数 :如果传入的参数是pojo数据类型(javaBean对象)。那么在xml中使用#{属性名}
代码:public List<User> queryUsersByUser(User user);
select `id`,`last_name` lastName,`sex` from t_user where last_name like #{lastName} and sex = #{sex}
 
5.传递多个Pojo对象作为参数: 以 #{ param1.属性名 },#{ param2.属性名 }...
代码:public List<User> queryUsersByUsers(User name, User sex);
select `id`,`last_name` lastName,`sex` from t_user where last_name like #{param1.lastName} and sex = #{param2.sex}
 
6.传递一个 List 实例或者数组作为参数对象传给 MyBatis,当你这么做的时候,MyBatis 会自动将它包装在一个 Map 中并以名称为键。List 实例将会以“list”作为key,而数组以“array”作为key
 
7.Mysql的字符串拼接,concat函数实现
代码:public List<User> queryUsersByName(@Param("name")String name);
select `id`,`last_name` lastName,`sex` from t_user where last_name like concat('%',#{name},'%')
 
resultType与resultMap的区别
<select id="queryUsersByName" resultType="com.atguigu.pojo.User">
我们查询都是返回一个简单的JavaBean对象,我们可以直接使用ResultType定义返回在的类型
但是如果我们查询的结果返回在的JavaBean中,又包含一个javaBean,或者包含一个javaBean对象的集合
那么这个时候,只能使用ResultMap来自定义返回的结果。
 
8.动态SQL语句foreach :例如(1,2,3) ,foreach 元素的功能是非常强大的,它允许你指定一个集合,声明可以用在元素体内的集合项和索引变量。它也允许你指定开闭匹配的字符串以及在迭代中间放置分隔符。这个元素是很智能的,因此它不会偶然地附加多余的分隔符。
delete from t_user where id in
<foreach collection="userIds" item="id" open="("  separator="," close=")" >
        #{id}
</foreach>
动态SQL语句if :
select username, email,createtime from t_user
<where>
    <if test = "queryText != null"> 
            loginacct like concat('%' , #{queryText}, '%')
    </if>
</where>
 
动态SQL语句foreach的insert拼串操作 :
<!-- insert into t_user_role(userid,roleid) values(1,3),(1,4),(1,5)-->
insert into t_user_role(userid, roleid) values 
<foreach collection="roleIds" item="roleid" separator=",">
    (#{userid},#{roleid})
</foreach>

常用crud的更多相关文章

  1. ExtJs之列表常用CRUD

    前端代码: Ext.onReady(function(){ Ext.define('Person', { extend: 'Ext.data.Model', fields: [{name: 'id', ...

  2. redis数据类型及常用命令介绍(图文实例)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhgAAAFLCAYAAACUdvXUAAAgAElEQVR4nO3da1da58L2fT5KfPvc96 ...

  3. EntityFreamWork 项目总结

    前段时间一直在忙着处理一个B2C的商城项目,未来得整理这次项目的心得,今天偶有空闲便写下这篇文章以记录整个项目的设计及自我总结. 这个项目是我综合传智播客教学基础将传统三层架构与EntityFrame ...

  4. WinForm EF+MySql企业管理软件C/S项目实战演练

    一.课程介绍 我们都知道在软件架构方式分为:C/S和B/S两类.这里阿笨不谈论两种软件架构的优劣之分,因为它们各有千秋,用于不同场合.一位伟大的讲师曾经说过一句话:事物存在即合理!录制这堂课程的目的就 ...

  5. 【private HibernateTemplate template;】 的作用

    [private HibernateTemplate template;] 的作用 这个是在spring中定义了一个bean,它是org.springframework.orm.hibernate3. ...

  6. spring boot + spring data jpa

    Spring Data Repository的核心接口是Repository(好像也没什么好惊讶的).这个接口需要领域类(Domain Class)跟领域类的ID类型作为参数.这个接口主要是让你能知道 ...

  7. 一个Web报表项目的性能分析和优化实践(五):重构有助于性能优化么?

    项目从初次开发到现在,已经快3年了.期间,有N个工程师参与过. 需求方面:增加减少,反反复复,无数次:人力方面:增加减少,不稳定:时间方面:功能开发着急上线,Bug开发紧急修复. 因此,代码臃肿,问题 ...

  8. @TableName(mybatis-plus中的注解)

    @TableName 描述:表名注解 属性 类型 必须指定 默认值 描述 value String 否 "" 表名 schema String 否 "" sch ...

  9. Spring Boot整合Mybatis(注解方式和XML方式)

    其实对我个人而言还是不够熟悉JPA.hibernate,所以觉得这两种框架使用起来好麻烦啊. 一直用的Mybatis作为持久层框架, JPA(Hibernate)主张所有的SQL都用Java代码生成, ...

随机推荐

  1. javaScript 删除事件 弹出确认 取消对话框

    javaScript 删除事件 弹出确认 取消对话框 1. <a href="javascript:if(confirm('确实要删除?'))location='http://www. ...

  2. win10 uwp 使用 Azure DevOps 自动构建

    通过 Azure DevOps 可以做到自动构建程序,覆盖计划.创建.编程.测试.部署.发布.托管.共享等各个环节,适用于大多数的语言.平台. 本文继续使用图床为例告诉大家如何使用 Azure Dev ...

  3. UVa 1635 - Irrelevant Elements-[分解质因数]

    Young cryptoanalyst Georgie is investigating different schemes of generating random integer numbers ...

  4. MySQL视图 definer & invoker 权限

    1.创建视图 CREATE VIEW `NewView`AS SELECT `user`.USER_ID, `user`.USER_NAME, department.DEPT_ID, departme ...

  5. 对input输入框日期显示格式化

    先:导入fmt标签 在对input框进行属性设置 <input type="text" name="createtime"  value="&l ...

  6. linux进程睡眠的介绍

    对于一个进程"睡眠"意味着什么? 当一个进程被置为睡眠, 它被标识为处于一个特殊的状 态并且从调度器的运行队列中去除. 直到发生某些事情改变了那个状态, 这个进程将不被 在任何 C ...

  7. 【Bad Blood】翻译0

    (一)作者注 本书基于对超过150人以上的上百个采访,包括60多个Theranos的职工而著成.叙述中出现的人物大多数都是他们的真实姓名,也有些人希望我隐藏身份信息,他们有些害怕公司的惩罚,有些担心会 ...

  8. 快排java代码

    定一个基准位,递归左右两边排序. public void fun(){ int arr[] = {2,3,4,5,6,7,822,3,4,5,8,6,5,4,2,1}; //System.out.pr ...

  9. Java实现简单的学生成绩管理系统

    ScoreInformation.java import java.util.Scanner; class ScoreInformation {    private String stunumber ...

  10. 49.植入HTML和自定义元件库

    首先设置一个圆角矩形 设置鼠标单击时的k空用例 这样当鼠标单击时会有一个小手的图标 然后设置鼠标移入时的动作 鼠标移入时设置文本动作的文本