MyBatis02:CRUD操作
CRUD操作
namespace
这个是命名空间,不可缺少,更不能写错
配置文件中namespace中的名称为对应Mapper接口或者Dao接口的全限定类名,完整包名,必须一致!
Select(用于查询的标签)
根据id查询用户
1、 在UserMapper中添加对应方法
public interface UserMapper {
//查询全部用户
List<User> selectUser();
//根据id查询用户
User selectUserById(int id);
}
2、在UserMapper.xml中添加Select语句
<select id="selectUserById" resultType="com.pp.pojo.User">
select * from user where id = #{id}
</select>
3、在测试类中测试
@Test
public void tsetSelectUserById() {
SqlSession session = MybatisUtils.getSession(); //获取SqlSession连接
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.selectUserById(1);
System.out.println(user);
session.close();
}
根据密码 和 名字 查询用户
- 直接在方法中传递参数
1、在接口方法的参数前加上@Param属性
2、SQL语句编写的时候,直接取@Param中设置的值即可,不需要单独设置参数类型
//通过密码和名字查询用户
User selectUserByNP(@Param("username") String username,@Param("pwd") String pwd);
2.使用Map
1、在接口方法中,参数直接传递Map
User selectUserByNP2(Map<String,Object> map);
2、编写SQL语句的时候,需要传递阐述类型,参数类型为map
<select id="selectUserByNP2" parameterType="map" resultType="com.kuang.pojo.User">
select * from user where name = #{username} and pwd = #{pwd}
</select>
3、测试的时候,Map的K为sql中取的值即可,没有任何顺序要求
Map<String, Object> map = new HashMap<String, Object>();
map.put("username","盼盼");
map.put("pwd","123456");
User user = mapper.selectUserByNP2(map);
像上面这种采取Map传参的适用于参数过多的情况,如果参数比较少,推荐采用直接传递参数
Insert(用于插入数据)
给数据库增加一个用户
1、在UserMapper接口中添加对应的方法
int addUser(User user);
2、在UserMapper.xml中编写insert语句
<insert id="addUser" parameterType="com.pp.pojo.User">
insert into user (id,name,pwd) values (#{id},#{name},#{pwd})
</insert>
3、编写测试类
@Test
public void testAddUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = new User(5,"王五","zxcvbn");
int i = mapper.addUser(user);
System.out.println(i);
session.commit(); //提交事务,重点!不写的话不会提交到数据库
//这里可以通过在创建工厂时,将open选项设为true即可实现自动提交事务
session.close();
}
update(用于更新数据)
修改用户的信息
1、在UserMapper中编写接口方法
//修改一个用户
int updateUser(User user);
2、在UserMapper.xml中编写对应的sql
<update id="updateUser" parameterType="com.kuang.pojo.User">
update user set name=#{name},pwd=#{pwd} where id = #{id}
</update>
3、测试
@Test
public void testUpdateUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.selectUserById(1);
user.setPwd("asdfgh");
int i = mapper.updateUser(user);
System.out.println(i);
session.commit(); //提交事务,重点!不写的话不会提交到数据库
session.close();
}
delete(用于删除数据)
根据id删除一个用户
1、添加接口方法
//根据id删除用户
int deleteUser(int id);
2、在xml文件中编写sql
<delete id="deleteUser" parameterType="int">
delete from user where id = #{id}
</delete>
3、测试
@Test
public void testDeleteUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
int i = mapper.deleteUser(5);
System.out.println(i);
session.commit(); //提交事务,重点!不写的话不会提交到数据库
session.close();
}
总结
- 所有的增加、删除、修改操作,都需要提交事务,否则数据库的数据不会更新
- 接口所有的普通参数,尽量都写上@Param参数,尤其是多个参数时
- 参数过多时,可以考虑使用map来进行传参
- 为了规范,在xml文件中编写sql时,我们尽量将Parameter参数和resultType都写上
模糊查询
1、在Java代码中添加sql通配符
string wildcardname = “%smi%”;
list<name> names = mapper.selectlike(wildcardname);
<select id=”selectlike”>
select * from foo where bar like #{value}
</select>
2、在sql语句中拼接通配符,sql注入风险
string wildcardname = “smi”;
list<name> names = mapper.selectlike(wildcardname);
<select id=”selectlike”>
select * from foo where bar like "%"#{value}"%"
</select>
MyBatis02:CRUD操作的更多相关文章
- Mybatis-02 CRUD
Mybatis-02 CRUD CRUD 先来简单回顾一下之前的准备步骤: 创建一个数据库,并加入数据 创建一个Maven项目 导入对应的依赖 创建Pojo类和Dao类 写出Mybatis工具类 配置 ...
- 【翻译】MongoDB指南/CRUD操作(四)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...
- 【翻译】MongoDB指南/CRUD操作(三)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...
- 【翻译】MongoDB指南/CRUD操作(二)
[原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...
- 【翻译】MongoDB指南/CRUD操作(一)
[原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(一) 主要内容:CRUD操作简介,插入文档,查询文档. CRUD操作包括创建.读取.更新和删 ...
- ASP.NET Core Web API Cassandra CRUD 操作
在本文中,我们将创建一个简单的 Web API 来实现对一个 “todo” 列表的 CRUD 操作,使用 Apache Cassandra 来存储数据,在这里不会创建 UI ,Web API 的测试将 ...
- MongoDB的CRUD操作
1. 前言 在上一篇文章中,我们介绍了MongoDB.现在,我们来看下如何在MongoDB中进行常规的CRUD操作.毕竟,作为一个存储系统,它的基本功能就是对数据进行增删改查操作. MongoDB中的 ...
- 【Java EE 学习 44】【Hibernate学习第一天】【Hibernate对单表的CRUD操作】
一.Hibernate简介 1.hibernate是对jdbc的二次开发 2.jdbc没有缓存机制,但是hibernate有. 3.hibernate的有点和缺点 (1)优点:有缓存,而且是二级缓存: ...
- 使用MyBatis对表执行CRUD操作
一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0&quo ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)
本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...
随机推荐
- Asp .Net Core 集成 FluentValidation 强类型验证规则库
目录 入门程序 安装 案例:登录 验证器 内置验证器 自定义验证器 编写自定义验证器 可重复使用的属性验证器 本地化 DI 自动验证 官网:https://docs.fluentvalidation. ...
- CMU DLSys 课程笔记 2 - ML Refresher / Softmax Regression
CMU DLSys 课程笔记 2 - ML Refresher / Softmax Regression 本节 Slides | 本节课程视频 这一节课是对机器学习内容的一个复习,以 Softmax ...
- react-native在windows环境搭建并使用脚手架新建工程
截止到2024-1-11,使用的主要软件的版本如下: 软件实体 版本 react-native 0.73.1 react 18.2.0 react-native-cli 2.0.1 Android S ...
- 物联网为什么需要5G?
摘要:5G,这个词,我想每个接触ICT行业的朋友都有听过,可5G的到来,对物联网行业的帮助究竟是什么? 我相信,95%的ICT从业者对5G这一概念没有一个清晰的认知. 这一期文章的主题主要是普及一些5 ...
- 自从安上了“AI”,这些商务经理天天按时下班了
摘要:能不能用AI来提升合同管理的效率呢?华为公司用自己的AI实践提交了一份教科书级别的答卷. 对于企业的商务精英而言,什么事情令他们既"煎熬"又"开心",既& ...
- OpenCV萌新福音:易上手的数字识别实践案例
摘要:信用卡识别的案例用到了图像处理的一些基本操作,对刚上手CV的人来说还是比较友好的. 本文分享自华为云社区<Python openCV案例:信用卡数字识别>,原文作者:深蓝的回音 . ...
- 顶级加密混淆混淆工具测评:ipagurd
顶级加密混淆混淆工具测评:ipagurd 摘要 JavaScript代码安全需求日益增长,因此JavaScript混淆工具的使用变得广泛.本文将对专业.商业JavaScript混淆工具ipagur ...
- npm 新型定时攻击或导致软件供应链安全风险
原标题: New npm timing attack could lead to supply chain attacks 原文链接: https://www.bleepingcomputer.com ...
- 我教你解决 Ubuntu 常见的三个问题:Window和Ubuntu无法复制,有另一个软件包管理程序正在运行、无法获得锁 /var/lib/apt/lists/lock - open (11: 资源暂时不可用)
第一个问题:当自己遇到这个问题的时候,查阅很多资料,发现很多需要安装一大推东西,又是安装,又是重启,最后还是没有搞定.最后还是通过这三行命令搞定了.sudo apt-get autoremove op ...
- 火爆全网的条形竞赛图,Python轻松实现
这个动图叫条形竞赛图,非常适合制作随时间变动的数据. 我已经用streamlit+bar_chart_race实现了,然后白嫖了heroku的服务器,大家通过下面的网址上传csv格式的表格就可以轻松制 ...