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- 模糊查询的更多相关文章

  1. JavaWeb系统(增删改查、多条件查询功能)

    该系统是一个简单的青年服务管理系统,主要包括了较完整的常用的增删改查以及多条件查询功能,对于初学者有很大帮助. 下面是相关的Java代码.jsp页面.以及数据库的创建和相关表的设计 java代码 首先 ...

  2. oracle初试、函数、增删改查、多表查询

      安装oracle后的测试以及解锁账户                  安装后打开命令行,输入 sqlplus 回车后会提示输入用户名,输入 sys或者system 回车后输入密码,密码为安装or ...

  3. Django中多表的增删改查操作及聚合查询、F、Q查询

    一.创建表 创建四个表:书籍,出版社,作者,作者详细信息 四个表之间关系:书籍和作者多对多,作者和作者详细信息一对一,出版社和书籍一对多 创建一对一的关系:OneToOne("要绑定关系的表 ...

  4. PHP-----练习-------租房子-----增删改查,多条件查询

    练习-------租房子-----增删改查,多条件 一 .题目要求: 二 .做法: [1]建立数据库 [2]封装类文件------DBDA.class.php <?php class DBDA ...

  5. 潭州课堂25班:Ph201805201 django框架 第六课 模型类增删改查,常用 的查询矣查询条件 (课堂笔记)

    在视图函数中写入增删改查的方法 增: 在 urls 中配置路径 : 查: 1: 在后台打印数据 在模型类中添加格式化输出 : QuerySet,反回的是个对象,可以按索引聚会,用 for 循环,, 找 ...

  6. mysql增删改查、连表查询、常用操作

    一.建表 1.最简单的建表CREATE TABLE user(id int,name char(20),age int); 2.带主键带注释和默认值创建表CREATE TABLE  user(id I ...

  7. mybatis:开发环境搭建--增删改查--多表联合查询(多对一)

    什么是mybatisMyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis使用简单的XML或 ...

  8. MySQL:记录的增删改查、单表查询、约束条件、多表查询、连表、子查询、pymysql模块、MySQL内置功能

    数据操作 插入数据(记录): 用insert: 补充:插入查询结果: insert into 表名(字段1,字段2,...字段n) select (字段1,字段2,...字段n) where ...; ...

  9. MyBatis的使用增删改查(两种分页查询)

    文件目录 写一下每个文件的代码  UserDao.java package cn.zys.dao; import java.io.IOException; import java.util.List; ...

随机推荐

  1. Spring Data Jpa 更新操作

    第一步,通过Repository对象把实体根据ID查询出来 第二部,往查出来的实体对象进行set各个字段 第三步,通过Repository接口的save方法进行保存 保存和更新方式(已知两种) 第一种 ...

  2. Mysql之B+树索引实战

    索引代价 空间上的代价 一个索引都对应一棵B+树,树中每一个节点都是一个数据页,一个页默认会占用16KB的存储空间,所以一个索引也是会占用磁盘空间的. 时间上的代价 索引是对数据的排序,那么当对表中的 ...

  3. java代码常用知识点

    1.Assert java断言assert是jdk1.4引入的.assert这个关键字我们称之为"断言".当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionEr ...

  4. springcloud断路器作用?

    当一个服务调用另一个服务由于网络原因或自身原因出现问题,调用者就会等待被调用者的响应 当更多的服务请求到这些资源导致更多的请求等待,发生连锁效应(雪崩效应)断路器有完全打开状态:一段时间内 达到一定的 ...

  5. Java 中用到的线程调度算法是什么?

    抢占式.一个线程用完 CPU 之后,操作系统会根据线程优先级.线程饥饿情况等 数据算出一个总的优先级并分配下一个时间片给某个线程执行.

  6. 学习ELK日志平台(四)

    一:需求及基础: 场景: 1.开发人员不能登录线上服务器查看详细日志 2.各个系统都有日志,日志数据分散难以查找 3.日志数据量大,查询速度慢,或者数据不够实时 4.一个调用会涉及到多个系统,难以在这 ...

  7. 《剑指offer》面试题3:二维数组中的查找

    面试题3:二维数组中的查找 面试题3:二维数组中的查找题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的个二维数组和一个整数,判 ...

  8. 深入解析丨母婴App如何迅速收割2W新用户?

    在讲案例前,我们需要先说一下精细化分析. 我们常说的精细化分析,就是一个持续"解构"的过程,通过像漏斗.留存.细分等高级分析功能,将"整体"按照事件属性解构成& ...

  9. 主线程中的Looper.loop()为什么不会造成ANR

    引子: 正如我们所知,在android中如果主线程中进行耗时操作会引发ANR(Application Not Responding)异常. 造成ANR的原因一般有两种: 当前的事件没有机会得到处理(即 ...

  10. Java基础之浅谈接口

    前言 前几篇文章我们已经把Java的封装.继承.多态学习完了,现在我们开始比较便于我们实际操作的学习,虽然它也是Java基础部分,但是其实入门容易,精通很难. 我认真的给大家整理了一下这些必须学会.了 ...