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. Linux下使用压力测试工具stress

    一:stress的安装 首先解压安装包到/usr/local/src/下 mv stress-1.0.4.tar.gz /usr/local/src​tar -zxf stress-1.0.4.tar ...

  2. Kerberos基本原理、安装部署及用法

    1. 概述 Kerberos是一种认证机制. 目的是,通过密钥系统为客户端/服务器应用程序提供强大的认证系统:保护服务器防止错误的用户使用,同时保护它的用户使用正确的服务器,即支持双向验证:Kerbe ...

  3. 请简述下你在哪些场景下会选择 Kafka?

    日志收集:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop.HBase.Solr等. 消息系统:解耦和生产者和消费者.缓 ...

  4. ConcurrentHashMap 的并发度是什么 ?

    ConcurrentHashMap 的并发度就是 segment 的大小,默认为 16,这意味着最多同时可以有 16 条线程操作 ConcurrentHashMap,这也是ConcurrentHash ...

  5. 阐述 final、finally、finalize 的区别?

    final:修饰符(关键字)有三种用法:如果一个类被声明为 final,意味 着它不能再派生出新的子类,即不能被继承,因此它和 abstract 是反义词.将 变量声明为 final,可以保证它们在使 ...

  6. 学习zabbix(八)

    一,Zabbix架构 zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix 能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制 ...

  7. 学习ELK日志平台(五)

    ELK Stack 通常情况下: 1,开发人员是不能登录线上服务器查看日志信息 2,各个系统的日志繁多,日志数据分散难以查找 3,日志数据量较大,查询速度慢,数据不够实时性 4,一个调用会涉及到多个系 ...

  8. 学习MFS(五)

     ########################################################## mfs master 安装 建议 cp eth0 eth0:0 ifup eth ...

  9. vue 3d轮播组件 vue-carousel-3d

    开发可视化项目时,需要3d轮播图,找来找去发现这个组件,引用简单,最后实现效果还不错.发现关于这个组件,能搜到的教程不多,就分享一下我的经验. 插件github地址:https://wlada.git ...

  10. 学习移动机器人SLAM、路径规划必看的几本书

    作者:小白学移动机器人链接:https://zhuanlan.zhihu.com/p/168027225来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 声明:推荐正版图 ...