Mybatis实现增删改查
1、CRUD
1.1namespace
namespace中的包名必须和Dao/mapper接口包名一致
1.2select
选择,查询语句
id:就是对应的namespace中的方法名
resultType:Sql语句执行的返回值类型
parameterType:参数类型
编写接口
User getUserById(int id);
编写接口对应的Mapper中语句
<select id="getUserById" parameterType="int"
resultType="com.aostarit.entity.User">
select * from mybatis.user where id = #{id}
</select>
测试:
@Test
public void getUserById() {
//获得sqlSession对象
SqlSession sqlsession = MybatisUtil.getSqlsession();
//执行SQL
UserMapper mapper = sqlsession.getMapper(UserMapper.class);
User user = mapper.getUserById(1);
System.out.println(user);
//关闭sqlSession
sqlsession.close();
}
1.3Insert
<!--对象中的属性可以直接取出来 -->
<insert id="addUser" parameterType="com.aostarit.entity.User">
insert into mybatis.user (id, name, pwd) values (#{id},#{name},#{pwd})
</insert>
1.4update
<update id="updateUser" parameterType="com.aostarit.entity.User">
update mybatis.user set name = #{name},pwd = #{pwd} where id = #{id}
</update>
1.5delete
<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id = #{id}
</delete>
注意点:增删改查需要提交事务
分许错误:
标签不要匹配错误:例如:select标签中必须写select语句
resources绑定mapper,需要使用路径
程序配置文件必须符合规范!
NullPointException,没有注册到资源!
输出的xml文件中存在中文乱码问题
maven资源没有导出问题!
mybatis核心配置文件中mapper映射器路径不能带.,需要用/代替
<!--映射器-->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
2、Map和模糊查询拓展
2.1假设我们的实体类、或者数据库中的表、字段或者参数过多,我们应该考虑使用Map!
<insert id="addUserMap" parameterType="map">
insert into mybatis.user (id, name, pwd) values (#{userId},#{userName},#{userPwd})
</insert>
public void addUser2() {
//获得sqlSession对象
SqlSession sqlsession = MybatisUtil.getSqlsession();
UserMapper mapper = sqlsession.getMapper(UserMapper.class);
HashMap<String, Object> userMap = new HashMap<String, Object>();
userMap.put("userId",10);
userMap.put("userName","11234");
userMap.put("userPwd","1234343");
int result = mapper.addUserMap(userMap);
if(result>0){
System.out.println("插入成功");
}
//提交事务
sqlsession.commit();
//关闭sqlSession
sqlsession.close();
}
Map传递参数,直接在sql中取出对象即可
对象传递参数,直接在sql中取对象的属性即可
只有一个基本类型参数的情况下,可以直接在sql取到!
多个参数用Map,或者注解!
2.2模糊查询
1、Java代码执行的时候,传递通配符% %
List<User> userLike = mapper.getUserLike("%李%");
2、在sql拼接中使用通配符!
<select id="getUserLike" resultType="com.aostarit.entity.User">
select * from mybatis.user where name like "%"#{value}"%"
</select>
Mybatis实现增删改查的更多相关文章
- 学习MyBatis必知必会(5)~了解myBatis的作用域和生命周期并抽取工具类MyBatisUtil、mybatis执行增删改查操作
一.了解myBatis的作用域和生命周期[错误的使用会导致非常严重的并发问题] (1)SqlSessionFactoryBuilder [ 作用:仅仅是用来创建SqlSessionFactory,作用 ...
- MyBatis的增删改查。
数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改,并且对程序接口做了一些调整,以及对一些问题进行了解答. 1.调整后的结构图: 2.连接数据库文件配置分离: 一般的程序都会把连 ...
- MyBatis批量增删改查操作
前文我们介绍了MyBatis基本的增删该查操作,本文介绍批量的增删改查操作.前文地址:http://blog.csdn.net/mahoking/article/details/43673741 ...
- 上手spring boot项目(三)之spring boot整合mybatis进行增删改查的三种方式。
1.引入依赖. <!--springboot的web起步依赖--><dependency> <groupId>org.springframework.boot< ...
- 上手spring boot项目(三)之spring boot整合mybatis进行增删改查
使用mybatis框架进行增删改查大致有两种基础方式,一种扩展方式.两种基础方式分别是使用xml映射文件和使用方法注解.扩展方式是使用mybatis-plus的方式,其用法类似于spring-data ...
- 从0开始完成SpringBoot+Mybatis实现增删改查
1.准备知识: 1)需要掌握的知识: Java基础,JavaWeb开发基础,Spring基础(没有Spring的基础也可以,接触过Spring最好),ajax,Jquery,Mybatis. 2)项目 ...
- Spring Boot入门系列(六)如何整合Mybatis实现增删改查
前面介绍了Spring Boot 中的整合Thymeleaf前端html框架,同时也介绍了Thymeleaf 的用法.不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/z ...
- Mybatis实例增删改查(二)
创建实体类: package com.test.mybatis.bean; public class Employee { private Integer id; private String las ...
- mybatis的增删改查返回值小析(六)
本文验证了通过mybatis访问数据库时的,增删改查的返回值情况. 直接看代码. 1.service层 /** *@Author: Administrator on 2020/3/12 15:15 * ...
- ssm 框架实现增删改查CRUD操作(Spring + SpringMVC + Mybatis 实现增删改查)
ssm 框架实现增删改查 SpringBoot 项目整合 一.项目准备 1.1 ssm 框架环境搭建 1.2 项目结构图如下 1.3 数据表结构图如下 1.4 运行结果 二.项目实现 1. Emplo ...
随机推荐
- 从全球顶级数据库大会 SIGMOD 看数据库发展趋势
本文来自 NebulaGraph 的软件工程师文豪在美国费城参加 2022 年 SIGMOD 大会时的见闻.SIGMOD 是数据库领域的顶级会议之一,是 CCF 数据库 / 数据挖掘 / 内容检索领域 ...
- Java 在三个数字中找出最大值
1 int aa1 = 11000000; 2 int aa2 = 20000; 3 int aa3 = 6000; 4 5 //第一种 6 int max = (aa1 > aa2)? aa1 ...
- gitlab推送代码触发jenkins构建
预期:推送devloop或者master分支的代码, 自动执行jenkins 发布测试环境 首先,jenkins中需要安装如下插件 打开一个任务配置,构建触发器中勾选"Build when ...
- CPNtools协议建模安全分析--ML语言之颜色集定义(六)
之前一直在怀疑我是不是因为对CPN Tools的原理结构还是不够理解,对Petri网的还没有弄清楚,越往后面看这种质疑越来越严重. 之前说CPN Tools在对称和非对称算法中不能形式化的问题,后续看 ...
- 基于RocketMQ实现分布式事务(半消息事务)
一.背景 RocketMQ的分布式事务可以称为"半消息事务". 二.原理 2.1原理 RocketMQ是靠半消息机制实现分布式事务: 事务消息:MQ 提供类似 X/Open XA ...
- 封装svg通用组件
安装vite-plugin-svg-icons插件 pnpm i vite-plugin-svg-icons -D 在main.ts中引入vite-plugin-svg-icons import 'v ...
- 删除文件或目录 被进程占用或锁定locked 查询进程 资源监视器-cpu-关联句柄-输入文件全路径
删除文件或目录 被进程占用或锁定 查询进程 资源监视器-cpu-关联句柄-输入文件全路径 右键点击桌面的Win图标,点击"任务管理器">>点击左上角"性能&q ...
- 缓存 SpringModules Cache ( spring 和 ehcache的整合 )
spring提供缓存bean方案 springbeancachecachingpath 下面格式整理有些混乱,spring3.1如何使用cache 缓存请参照:spring cache http:// ...
- 聊聊ChatGLM-6B医疗数据微调
转载请注明出处: https://www.cnblogs.com/zhiyong-ITNote/ 参考了多个医疗大模型,如扁鹊.灵心等,重新思考了下微调的方案以及数据集的格式:基于ChatGLM/其它 ...
- atcoder: Moves on Binary Tree
先进行压缩move的次数,再用biginteger. import java.io.BufferedReader; import java.io.IOException; import java.io ...