MyBatis(二):基础CRUD
本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出1便就懂!b站搜索狂神说即可
https://space.bilibili.com/95256449?spm_id_from=333.788.b_765f7570696e666f.2
MyBatis中的基本CRUD
接上一篇博客:https://www.cnblogs.com/renzhongpei/p/12559788.html
修改图中的类
Mapper接口
package com.rzp.dao;
import com.rzp.pojo.User;
import java.util.List;
public interface UserMapper {
List<User> getUserList();
//根据ID查询用户
User getUserById (int id);
//insert 一个用户
void addUser(User user);
//update 一个用户
void updateUser(User user);
//delete 一个用户
void deleteUser(int id);
}
Mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--中文注释-->
<mapper namespace="com.rzp.dao.UserMapper">
<select id="getUserList" resultType="com.rzp.pojo.User">
select * from mybatis.user
</select>
<!--id是对应的方法名字,parameterType是输入参数的类型-->
<select id="getUserById" resultType="com.rzp.pojo.User" parameterType="int">
<!-- #{id}是实体类的属性,只要属性名字一样就能完成-->
select * from mybatis.user t where t.id = #{id}
</select>
<insert id="addUser" parameterType="com.rzp.pojo.User" >
insert into mybatis.user (id,name,pwd) value (#{id},#{name},#{pwd});
</insert>
<update id="updateUser" parameterType="com.rzp.pojo.User">
update mybatis.user set name = #{name}, pwd = #{pwd} where id = #{id};
</update>
<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id = #{id};
</delete>
</mapper>
测试程序UserDaoTest
按方法测试即可
//按ID查询
@Test
public void getUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
try {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserById(1);
System.out.println(user);
}catch (Exception e){
e.printStackTrace();
}finally {
sqlSession.close();
}
}
//增删改需要提交事务
//增加
@Test
public void addUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
try {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = new User(6,"rzp3","312");
mapper.addUser(user);
int x = 1/0;
//提交事务
sqlSession.commit();
}catch (Exception e){
e.printStackTrace();
//错误则回滚,其实不需要,程序已经封装好会回滚
sqlSession.rollback();
}finally {
sqlSession.close();
}
}
//更新
@Test
public void updateUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
try {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = new User(3,"cys","31112");
mapper.updateUser(user);
//提交事务
sqlSession.commit();
}catch (Exception e){
e.printStackTrace();
//错误则回滚,其实不需要,程序已经封装好会回滚
sqlSession.rollback();
}finally {
sqlSession.close();
}
}
//删除
@Test
public void deleteUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
try {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(5);
//提交事务
sqlSession.commit();
}catch (Exception e){
e.printStackTrace();
//错误则回滚,其实不需要,程序已经封装好会回滚
sqlSession.rollback();
}finally {
sqlSession.close();
}
}
注意:Mapper.xml配置错误(比如类名、方法名写错了)也会导致sqlSession生成的时候就报错!这个时候IDEA提示的错误会链接向sqlSession生成那一行。
使用Map来简化传参的操作
数据库字段多的时候,如果只是修改其中一个两个字段,但是如果用上文的UPDATE,就要new一个实体类,操作比较麻烦。这时候可以使用map。
UserMapper接口
//万能的map
void addUser2(Map<String,Object> map);
UserMapper.xml
<insert id="addUser2" parameterType="map" >
<!--传入参数是map,用#{}取参数的时候就是按照map的key值来获取-->
insert into mybatis.user (id,name,pwd) value (#{userid},#{username},#{password});
</insert>
测试类
//更新
@Test
public void updateUser2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
try{
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map map = new HashMap();
map.put("userid",5);
map.put("username","cyy2");
map.put("password","3212");
mapper.addUser2(map);
sqlSession.commit();
}catch (Exception e){
}finally {
sqlSession.close();
}
}
这里虽然使用insert作为例子,而且传了所有参数,但是显然改成update并且只传ID和要修改的参数也是可以的。
同理,也可以用在select中,传多个参数查询
Mybatis中的Like查询
模糊查询的两种写法
在执行的时候传递通配符
User user = mapper.getUserById("%1%");
在xml文件中使用通配符
select * from mybatis.user t where t.id like "%"#{id}"%"
MyBatis(二):基础CRUD的更多相关文章
- mybatis(二)执行CRUD操作的两种方式配置和注解
一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0&quo ...
- mybatis入门基础(二)----原始dao的开发和mapper代理开发
承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先 ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)
本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
一.使用MyBatis对表执行CRUD操作--基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: 1 <?xml version="1.0&q ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...
- 【转】MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
[转]MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据, ...
- Mybatis的学习总结二:使用Mybatis对表进行CRUD操作【参考】
一.使用Mybatis对表进行CRUD操作------基于XML的实现 1.定义SQL的映射文件 2.在conf.xml中进行注册. 2.创建测试类 [具体过程参考:Mybatis的学习总结一] 二. ...
- MyBatis学习笔记(二)——使用MyBatis对表执行CRUD操作
转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4262895.html 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用My ...
- 二:MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...
- 【Mybatis】MyBatis对表执行CRUD操作(三)
本例在[Mybatis]MyBatis配置文件的使用(二)基础上继续学习对表执行CRUD操作 使用MyBatis对表执行CRUD操作 1.定义sql映射xml文件(EmployeeMapper.xml ...
随机推荐
- flask连接数据库的URI书写格式
1. MySQL mysql://username:password@hostname/database 2. PostgreSQL postgresql://username:password@ho ...
- 使用GUI工具Portainer.io管控Docker容器
背景 5年前容器技术扑面而来,如今已经成为面向云原生开发的基础架构,基于微服务的设计需要部署大量容器,同时强调了友好快速的管理容器. 是时候推荐一个轮子Portainer.io:提供GUI界面的容器管 ...
- 初创电商公司Drop的数据湖实践
欢迎关注微信公众号:ApacheHudi 1. 引入 Drop是一个智能的奖励平台,旨在通过奖励会员在他们喜爱的品牌购物时获得的Drop积分来提升会员的生活,同时帮助他们发现与他们生活方式产生共鸣的新 ...
- SpringBoot 集成MQTT配置
目录 1. 前言 2. MQTT介绍 3. SpringBoot 集成MQTT 3.1 导入mqtt库 3.2 配置MQTT订阅者 3.3 配置MQTT发布者 3.4 MQTT消息处理和发送 3.4. ...
- 基于 HTML5 WebGL 与 GIS 的智慧机场大数据可视化分析
前言:大数据,人工智能,工业物联网,5G 已经或者正在潜移默化地改变着我们的生活.在信息技术快速发展的时代,谁能抓住数据的核心,利用有效的方法对数据做数据挖掘和数据分析,从数据中发现趋势,谁就能做到精 ...
- SQL语句中,如何使用含有if....else...判断语句
在我们开发中,有时要对数据库中的数据按照条件进行查询,用到if else类似的语句进行判断,那么if else语句只有在存储过程,触发器之类的才有,但是要在sql上当满足某种条件上要取不同的字段值,刚 ...
- SpringBoot怎么自动部署到内置的Tomcat的?
先看看SpringBoot的主配置类的main方法: main方法运行了一个run()方法,进去run方法看一下: /** * 静态帮助程序,可用于从中运行{@link SpringApplicati ...
- 二进制补码:Why & How
二进制补码:Why & How 学习计算机原理或者语言的底层操作难免会遇到用二进制补码表示负数的问题.由于一些书本上对于采用补码的原因没有详细解释,很多人会认为这只是一种规定,但实际上采用补码 ...
- [模板] dfs序
B.树之呼吸-贰之型-dfs序 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 42 (16 users) Total Accepted ...
- Layui-admin-iframe通过页面链接直接在iframe内打开一个新的页面,实现单页面的效果
前言: 使用Layui-admin做后台管理框架有很长的一段时间了,但是一直没有对框架内iframe菜单栏切换跳转做深入的了解.今天有一个这样的需求就是通过获取超链接中传递过来的跳转地址和对应的tab ...