增:@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>
- ExtJs之列表常用CRUD
前端代码: Ext.onReady(function(){ Ext.define('Person', { extend: 'Ext.data.Model', fields: [{name: 'id', ...
- redis数据类型及常用命令介绍(图文实例)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhgAAAFLCAYAAACUdvXUAAAgAElEQVR4nO3da1da58L2fT5KfPvc96 ...
- EntityFreamWork 项目总结
前段时间一直在忙着处理一个B2C的商城项目,未来得整理这次项目的心得,今天偶有空闲便写下这篇文章以记录整个项目的设计及自我总结. 这个项目是我综合传智播客教学基础将传统三层架构与EntityFrame ...
- WinForm EF+MySql企业管理软件C/S项目实战演练
一.课程介绍 我们都知道在软件架构方式分为:C/S和B/S两类.这里阿笨不谈论两种软件架构的优劣之分,因为它们各有千秋,用于不同场合.一位伟大的讲师曾经说过一句话:事物存在即合理!录制这堂课程的目的就 ...
- 【private HibernateTemplate template;】 的作用
[private HibernateTemplate template;] 的作用 这个是在spring中定义了一个bean,它是org.springframework.orm.hibernate3. ...
- spring boot + spring data jpa
Spring Data Repository的核心接口是Repository(好像也没什么好惊讶的).这个接口需要领域类(Domain Class)跟领域类的ID类型作为参数.这个接口主要是让你能知道 ...
- 一个Web报表项目的性能分析和优化实践(五):重构有助于性能优化么?
项目从初次开发到现在,已经快3年了.期间,有N个工程师参与过. 需求方面:增加减少,反反复复,无数次:人力方面:增加减少,不稳定:时间方面:功能开发着急上线,Bug开发紧急修复. 因此,代码臃肿,问题 ...
- @TableName(mybatis-plus中的注解)
@TableName 描述:表名注解 属性 类型 必须指定 默认值 描述 value String 否 "" 表名 schema String 否 "" sch ...
- Spring Boot整合Mybatis(注解方式和XML方式)
其实对我个人而言还是不够熟悉JPA.hibernate,所以觉得这两种框架使用起来好麻烦啊. 一直用的Mybatis作为持久层框架, JPA(Hibernate)主张所有的SQL都用Java代码生成, ...
随机推荐
- 2018-8-10-WPF-可获得焦点属性
title author date CreateTime categories WPF 可获得焦点属性 lindexi 2018-08-10 19:16:53 +0800 2018-05-15 15: ...
- sublime text3神器插件
(首先安装)Package Control Package Control,就像 Linux 下的 apt-get 和 yum 一样,它是 Sublime Text 的包管理器 1.Emmet 是一 ...
- H5 多媒体标签
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- idea运行项目时报错:Error:java无效的源发行版:1.8
解决办法:project structure中设置 JDK 和language 匹配即可.如图: 另外如果有maven,需要把maven中JDK版本设置成一样的.
- 【t056】智力问答(multiset做法)
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 新年联欢会上,G.Sha负责组织智力问答节目.G.Sha建立了一个很大很大的超级题库,并衡量了每道题的 ...
- CF1228——记一次和紫名失之交臂的CF
CF1228--记一次和紫名失之交臂的CF 第无数次和暴涨失之交臂 A 题目大意给定\(l,r\)输出任意一个\(l,r\)之间的每一位都不同的数 \((l <= r <= 10^5)\) ...
- vue-learning:16 - js - computed
computed 在指令章节讲过,插值{{ }}和指令都接受变量和表达式的写法,使用表达式可以进行简单的二元或三元运算.但如果要执行更加复杂的计算或频繁重复的计算,如果还是直接写在指令的表达式中会让代 ...
- html 中文占位符
=> 普通的英文半角空格 => => => no-break space (普通的英文半角空格但不换行) => 中文全角空格 (一个中文宽度) =&g ...
- STVD、IAR两种编译器比较
1.全局查找功能: STVD:全局查找功能全局查找功能比较麻烦,有3个动作. IAR:有全局查找功能比较方便,只要一个动作,和KEIL一样. 2.编译时间 STVD:相对比较慢. IAR:相对快点. ...
- Struts2 注释类型
Struts 2 应用程序可以使用Java5注释作为替代XML和Java属性配置.这里是清单的不同的类别有关的最重要的注解: 命名空间注释(动作注释): @ Namespace注释允许在Action类 ...