增:@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. linux scull 函数open 方法

    open 方法提供给驱动来做任何的初始化来准备后续的操作. 在大部分驱动中, open 应当 进行下面的工作: 检查设备特定的错误(例如设备没准备好, 或者类似的硬件错误 如果它第一次打开, 初始化设 ...

  2. JMETER+JENKINS接口测试持续集成

    FIDDER+ANT+JENKINS+JMETER+SVN+tomcat接口测试集成 操作流程: 1.测试人员通过FIDDER过滤抓取接口调用信息,导出成jmx文件.(jmeter支持命令行方式调用j ...

  3. Linux 内核 kobject 初始化

    本书已经展示了许多数据类型, 带有简单的在编译或者运行时初始化机制. 一个 kobject 的初始化有些复杂, 特别当使用它的所有函数时. 不管一个 kobject 如何使用, 但是, 必须进行几个步 ...

  4. vue-learning:6-template-v-bind

    绑定元素特性的指令v-bind 回顾下,从HTML元素的结构看,在VUE框架中,内容由插值{{ }}和v-html绑定:v-if和v-show可以控制元素的可见性:v-for可以用于批量生成列表元素. ...

  5. react-native-swiper使用时候的小坑

    react-native版本:0.61.1 react-native-swiper版本:1.5.14 当时第一次使用时候直接粘贴的别人博客的教程代码,只修改了swiper里面的元素,结果发现不能切换, ...

  6. 关于redux和react-redux使用combinereducers之后的问题

    最近用react写项目的时候,开始复习之前学过的redux,记录一下一些坑,以防忘记 我现在的redux目录下有这么些东西 首先是index.js import { createStore } fro ...

  7. 洛谷——P1111修复公路(并查集)

    题目背景 AA地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 题目描述 给出A地区的村庄数NN,和公路数MM,公路是双向的.并告诉你每条公路的连着哪两个村庄,并告诉你 ...

  8. 30分钟全方位了解阿里云Elasticsearch(附公开课完整视频)

    摘要: 阿里云Elasticsearch提供100%兼容开源Elasticsearch的功能,以及Security.Machine Learning.Graph.APM等商业功能,致力于数据分析.数据 ...

  9. 使用Sklearn-train_test_split 划分数据集

    使用sklearn.model_selection.train_test_split可以在数据集上随机划分出一定比例的训练集和测试集 1.使用形式为: from sklearn.model_selec ...

  10. JMeter数据库测试计划

    在系统上安装数据库服务器之后. 按着这些次序: 创建名为testdb的数据库. 创建表 - tb_user. 将记录插入到tb_user表中. 下图显示了创建的数据库及其记录. 注意:您需要将相应的J ...