增:@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代码生成, ...
随机推荐
- spring boot + thymeleaf 乱码问题
spring boot + thymeleaf 乱码问题 hellotrms 发布于 2017/01/17 15:27 阅读 1K+ 收藏 0 答案 1 开发四年只会写业务代码,分布式高并发都不会还做 ...
- 查看php-fpm的进程和端口号
ps -ef | grep php-fpm 查看php-fpm所有的进程 ps -ef | grep php-fpn.conf 查看配置所在路径 netstat -lntp 查看监听端口 lis ...
- laydate type=time/datetime/date 开始时间和结束时间的输入限制
最近项目中使用了laydate插件,需要限制开始时间和结束时间的输入 1.type=date 要求:周期开始时间和周期结束时间以天为单位,结束时间不能早于开始时间,可以是同一天. 周期开始时间:< ...
- Redis 命令行工具能这样用你知道了吗?
我们天天都在使用 Redis 内置的命令行工具 redis-cli,久而久之以为它就是一个简单的交互式 Redis 数据结构手工操作程序,但是它背后强大的功能绝大多数同学可能闻所未闻.本节我们一起来挖 ...
- SpringDataJPA+QueryDSL玩转态动条件/投影查询
在本文之前,本应当专门有一篇博客讲解SpringDataJPA使用自带的Specification+JpaSpecificationExecutor去说明如何玩条件查询,但是看到新奇.编码更简单易懂的 ...
- 2019-9-2-C#同步方法转异步
title author date CreateTime categories C#同步方法转异步 lindexi 2019-09-02 12:57:37 +0800 2018-2-13 17:23: ...
- H3C Hosts文件
- FineReport报表和水晶报表的比较
FineReport报表和水晶报表的比较 FineReport报表软件针对复杂格式的报表数据及Web报表的展现,通过多源分片.不规则分组.双向扩展来轻松拖拽做复杂格式的报表,制作报表从此摆脱了复杂的S ...
- 21.模块的执行以及__name__
执行结果: "E:\Program Files\JetBrains\PycharmProjects\python_demo\venv\Scripts\python.exe" &qu ...
- 《HelloGitHub》第 45 期
兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这是一个面向编程新手.热爱编程.对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编 ...