增删改查- 万能map- 模糊查询
1.编写接口
2.编写对应的mapper种的sql语句
3.测试
接口

public interface UserDao {
List<User> getUserList();
//根据ID查询用户
User getUserId(int id);
//增加一个用户
int addUser(User user);
//修改一个用户
int update_User(User user);
//删除一个用户
int deleteUser(int id);
}
创建相关的实体类的时候,属性要和数据库对应的字段相同(一一对应),方便后面 传入对象 对数据库进行更改
比如数据库字段id name age, 创建的实体类User 属性就包括 int id , String name , int age 也包括相关的set get 方法
增删改查用特有的方式写到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接口-->
<mapper namespace="com.ljm.dao.UserDao(接口路径)"> </mapper>
增

<insert id="addUser" parameterType="com.ljm.pojo.User" >
insert into mybatis.user(name,age) value (#{name},#{age});
</insert>

public void test_addUser(){
SqlSession sqlSession=MybatisUtils.getSqlSession();
UserDao mapper=sqlSession.getMapper(UserDao.class);
int number = mapper.addUser(new User("韩红",21));
System.out.println(number);
//必须要提交事务
sqlSession.commit();
sqlSession.close();
删

<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id=#{id}
</delete> <!-- 这里实测 对象属性中没有id这一项 , 仅仅传递一个值(不是对象)的话
这样也能成功删除 -->

public void test_deleteUser(){
SqlSession sqlSession=MybatisUtils.getSqlSession();
UserDao mapper=sqlSession.getMapper(UserDao.class);
int number = mapper.deleteUser(5);
System.out.println(number);
//必须要提交事务
sqlSession.commit();
sqlSession.close();
}
改

<update id="update_User" parameterType="com.ljm.pojo.User">
update mybatis.user
set age =#{age},name =#{name}
where id=6
</update> <!-- update: where id=6 是对象中的属性缺少与数据库字段对应(比如自增ID),可以直接再此写上数值 ,不推荐 ,还是对象属性全部覆盖字段会比较好 如 where id=#{id}
-->

public void test_updateUser(){
SqlSession sqlSession=MybatisUtils.getSqlSession();
UserDao mapper=sqlSession.getMapper(UserDao.class);
int number = mapper.update_User(new User("韩跑跑",28));
System.out.println(number);
//必须要提交事务
sqlSession.commit();
sqlSession.close();
}
查(传入是对象的时候,也依然使用#{属性值}来取值)

<!-- parameterType 输入参数的类型--> <select id="getUserId" resultType="com.ljm.pojo.User" parameterType="int" >
select * from mybatis.user where id =#{id}
</select> <!-- 单传一个值的话(不是对象),对象中没有id这个属性也行-->

public void test_getUserbyID(){
SqlSession sqlSession=MybatisUtils.getSqlSession();
UserDao mapper=sqlSession.getMapper(UserDao.class);
User user = mapper.getUserId(3);
System.out.println(user);
sqlSession.close();
}
模糊查询
自动提交事务:true

public static SqlSession getSqlSession(){
// SqlSession sqlSession= sqlSessionFactory.openSession();
// return sqlSession;
//优化 true自动提交()增删改
return sqlSessionFactory.openSession(true);
}
万能的Map
当实体类或者数据库中的表,字段过多, 需要传递多个参数, 就可以使用Map(或者注解)
遇到查询的时候,标签属性加上返回类型 resultMap=""
int getUserCount(Map<String, String> map);

<insert id="addUser2" parameterType="map" >
insert into mybatis.user(name,age) value (#{n},#{a});
</insert> <!-- value (#{n},#{a} 里面的n a 对应传的参里面的 n a -->

public void test_addUser2(){
SqlSession sqlSession=MybatisUtils.getSqlSession();
UserDao mapper=sqlSession.getMapper(UserDao.class);
Map<String, Object> map = new HashMap<>();
map.put("n","卫龙");
map.put("a","18");
//对应XML里面的n a
int number = mapper.addUser2(map);
System.out.println(number);
//必须要提交事务
sqlSession.commit();
sqlSession.close();
}
模糊查询
1.在JAVA代码中传递通配符% %
List<User> userList = mapper.getUserLike("%卫%");
2.在SQL拼接使用通配符(推荐)

<select id="getUserLike" resultType="com.ljm.pojo.User" >
select * from mybatis.user where name like "%"#{s}"%"
</select> <!-- <select id="getUserLike" resultType="com.ljm.pojo.User" >-->
<!-- select * from mybatis.user where name like CONCAT('%',#{s},'%')-->
<!-- </select>-->
增删改查- 万能map- 模糊查询的更多相关文章
- JavaWeb系统(增删改查、多条件查询功能)
该系统是一个简单的青年服务管理系统,主要包括了较完整的常用的增删改查以及多条件查询功能,对于初学者有很大帮助. 下面是相关的Java代码.jsp页面.以及数据库的创建和相关表的设计 java代码 首先 ...
- oracle初试、函数、增删改查、多表查询
安装oracle后的测试以及解锁账户 安装后打开命令行,输入 sqlplus 回车后会提示输入用户名,输入 sys或者system 回车后输入密码,密码为安装or ...
- Django中多表的增删改查操作及聚合查询、F、Q查询
一.创建表 创建四个表:书籍,出版社,作者,作者详细信息 四个表之间关系:书籍和作者多对多,作者和作者详细信息一对一,出版社和书籍一对多 创建一对一的关系:OneToOne("要绑定关系的表 ...
- PHP-----练习-------租房子-----增删改查,多条件查询
练习-------租房子-----增删改查,多条件 一 .题目要求: 二 .做法: [1]建立数据库 [2]封装类文件------DBDA.class.php <?php class DBDA ...
- 潭州课堂25班:Ph201805201 django框架 第六课 模型类增删改查,常用 的查询矣查询条件 (课堂笔记)
在视图函数中写入增删改查的方法 增: 在 urls 中配置路径 : 查: 1: 在后台打印数据 在模型类中添加格式化输出 : QuerySet,反回的是个对象,可以按索引聚会,用 for 循环,, 找 ...
- mysql增删改查、连表查询、常用操作
一.建表 1.最简单的建表CREATE TABLE user(id int,name char(20),age int); 2.带主键带注释和默认值创建表CREATE TABLE user(id I ...
- mybatis:开发环境搭建--增删改查--多表联合查询(多对一)
什么是mybatisMyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis使用简单的XML或 ...
- MySQL:记录的增删改查、单表查询、约束条件、多表查询、连表、子查询、pymysql模块、MySQL内置功能
数据操作 插入数据(记录): 用insert: 补充:插入查询结果: insert into 表名(字段1,字段2,...字段n) select (字段1,字段2,...字段n) where ...; ...
- MyBatis的使用增删改查(两种分页查询)
文件目录 写一下每个文件的代码 UserDao.java package cn.zys.dao; import java.io.IOException; import java.util.List; ...
随机推荐
- Zookeeper Watcher 机制 -- 数据变更通知 ?
Zookeeper 允许客户端向服务端的某个 Znode 注册一个 Watcher 监听,当服务 端的一些指定事件触发了这个 Watcher,服务端会向指定客户端发送一个事件通 知来实现分布式的通知功 ...
- Python - Python函数简介
- FPGA入门到精通系列1:数字电路基础知识
本文主要介绍数字电路基础知识,用最简洁的内容介绍最核心的知识. 1.数字电路是什么? 数字电路是利用电源电压的高电平和低电平分别表示1和0,进而实现信息的表达.模拟信号:随时间连续变化的信号.处理 ...
- 搞半天,全国34个省份包含湾湾\香港\澳门的高德poi兴趣点23类数据终于爬完事了
1.技术架构: python+阿里云数据库mongodb5.0+高德地图rest api 2.成本: 阿里云数据库mongodb5.0一个月话费1k多 2.遇到的问题 1)两个阿里云账号下 mongo ...
- Semantic UI 语义化设计的前端框架
UI是Web的灵魂!Semantic UI是一款语义化设计的前端框架,为攻城师而制作的可复用的开源前端框架. 特性 弃用有歧义的表述 Semantic是围绕自然交流语言而架构的,这使得开发更加直观(易 ...
- 从0搭建vue后台管理项目到颈椎病康复指南(一)
网上搜索了很久Vue项目搭建指南,并没有找到写的比较符合心意的,所以打算自己撸一个指南,集合众家之所长(不善于排版,有点逼死强迫症,如果觉得写的有问题,可以留言斧正,觉得写的太差的,可以留言哪里差, ...
- 【论文简读】 Deep web data extraction based on visual
<Deep web data extraction based on visual information processing>作者 J Liu 上海海事大学 2017 AIHC会议登载 ...
- 利用Charles做代理测试电脑上写的H5页面
做H5页面的同学可能经常会遇到一个场景,就是电脑上调试好的页面怎么在手机上访问测试呢? 下面就介绍一种自己经常使用的方式,利用Charles代理软件来实现! 安装Charles 直接去官网下载对应的系 ...
- MySQL优化篇系列文章(二)——MyISAM表锁与InnoDB锁问题
我可以和面试官多聊几句吗?只是想... MySQL优化篇系列文章(基于MySQL8.0测试验证),上部分:优化SQL语句.数据库对象,MyISAM表锁和InnoDB锁问题. 面试官:咦,小伙子,又来啦 ...
- java的内存泄露是如何发生的,如何避免和发现
java的垃圾回收与内存泄露的关系:[新手可忽略不影响继续学习] 马克-to-win:上一节讲了,(i)对象被置成null.(ii)局部对象(无需置成null)当程序运行到右大括号.(iii)匿名对象 ...