MyBatis:万能Map和模糊查询(狂神)
当写修改的方法时,里面的参数是个User对象,那么在UserMappwe.xml中values中要和对象的属性名相对应,并且需要创建对象,输入它的多个属性值需要更改的进行修改,比较麻烦,就可以考虑使用map
重复的代码不在写,只写更新过的:6. 7. 8.
UserDAO:
package com.kuang.dao;import com.kuang.pojo.User11;import java.util.List;
import java.util.Map;public interface UserDao {//查询所有用户List<User11> getUserList();//2.根据id查询User11 getUserById(int id);//3.添加一个用户int addUser(User11 user11);//4.修改用户int updateUser(User11 user11);//5.删除一个用户int deleteUser(int id);//6.万能的Map,添加用户int addUser2(Map<String,Object> map);//7.万能Map,查询用户User11 getUserById2(Map<String,Object> map);//8.模糊查询List<User11> getUserLike(String value);
}
UserMappper.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.kuang.dao.UserDao"><!--使用insert,update,delete,select标签来写sql语句resultType="com.kuang.pojo.User11":返回数据的类型--><select id="getUserList" resultType="com.kuang.pojo.User11">select * from mybatis.user11</select>
<!-- 2.根据id查询--><select id="getUserById" parameterType="int" resultType="com.kuang.pojo.User11">select * from mybatis.user11 where id=#{id}</select><!-- 3.插入一条数据,对象中的属性可直接取出来 ,如果parameterType传递的是User11对象,则values必须和对象的属性名一样--><insert id="addUser" parameterType="com.kuang.pojo.User11">insert into mybatis.user11(id,name,pwd) values (#{id},#{name},#{pwd});</insert><!-- 4.修改用户--><update id="updateUser" parameterType="com.kuang.pojo.User11">update mybatis.user11 set name=#{name},pwd=#{pwd} where id=#{id};</update><!-- 5.删除用户--><delete id="deleteUser" parameterType="int">delete from mybatis.user11 where id=#{id}</delete>
<!-- 6.万能的Map来添加用户 如果parameterType是map,values中可以随便,命名要和map的key对应就行,传递Map的key--><insert id="addUser2" parameterType="map">insert into mybatis.user11(id,name,pwd) values (#{userid},#{username},#{password});</insert><!-- 7.万能Map来查询数据--><select id="getUserById2" parameterType="map" resultType="com.kuang.pojo.User11">select * from mybatis.user11 where id=#{userid} and name=#{username};</select><!-- 8.迷糊查询第一种select * from mybatis.user11 where name like #{value}
--><select id="getUserLike" resultType="com.kuang.pojo.User11">select * from mybatis.user11 where name like "%"#{value}"%"</select>
</mapper>
UserDAOTest:
package com.kuang.dao;import com.kuang.dao.UserDao;
import com.kuang.pojo.User11;
import com.kuang.utils.MybaitsUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;import java.util.HashMap;
import java.util.List;
import java.util.Map;public class UserDAOTest {//测试查询所有用户@Testpublic void test(){//第一步:获取SqlSession对象SqlSession sqlSession= MybaitsUtils.getSqlSession();//方式一:getMapper 获取代理对象daoUserDao userDao=sqlSession.getMapper(UserDao.class);List<User11> user11List=userDao.getUserList();//方式二:不推荐使用// List<User11> user11List = sqlSession.selectList("com.kuang.dao.UserDao.getUserList");for (User11 user:user11List){System.out.println(user);}//关闭SqlSessionsqlSession.close();}//2.根据id查询@Testpublic void getUserByid(){//第一步:获取SqlSession对象SqlSession sqlSession= MybaitsUtils.getSqlSession();//方式一:getMapper 获取代理对象daoUserDao userDao=sqlSession.getMapper(UserDao.class);User11 user11=userDao.getUserById(1);System.out.println(user11);sqlSession.close();}//3.插入一条数据,增删改,需要提交事务@Testpublic void addUser(){//第一步:获取SqlSession对象SqlSession sqlSession= MybaitsUtils.getSqlSession();//方式一:getMapper 获取代理对象daoUserDao userDao=sqlSession.getMapper(UserDao.class);int res=userDao.addUser(new User11(4,"哈哈","123456"));if (res>0){System.out.println("插入成功");}//提交事务sqlSession.commit();sqlSession.close();}//4.修改用户信息@Testpublic void updateUser(){//第一步:获取SqlSession对象SqlSession sqlSession= MybaitsUtils.getSqlSession();//方式一:getMapper 获取代理对象daoUserDao userDao=sqlSession.getMapper(UserDao.class);int res=userDao.updateUser(new User11(4,"呵呵","123"));if (res>0){System.out.println("修改成功");}//提交事务sqlSession.commit();sqlSession.close();}//5.根据id删除用户@Testpublic void deleteUser(){//第一步:获取SqlSession对象SqlSession sqlSession= MybaitsUtils.getSqlSession();//方式一:getMapper 获取代理对象daoUserDao userDao=sqlSession.getMapper(UserDao.class);int res=userDao.deleteUser(4);if (res>0){System.out.println("删除成功");}//提交事务sqlSession.commit();sqlSession.close();}//6.万能的Map来添加一条数据@Testpublic void addUser2(){//第一步:获取SqlSession对象SqlSession sqlSession= MybaitsUtils.getSqlSession();//方式一:getMapper 获取代理对象daoUserDao userDao=sqlSession.getMapper(UserDao.class);Map<String,Object> map=new HashMap<String, Object>();map.put("userid",5);map.put("username","hellow");map.put("password","123");int res = userDao.addUser2(map);if (res>0){System.out.println("插入成功");}//提交事务sqlSession.commit();sqlSession.close();}//7.万能的Map来查询数据@Testpublic void getUserById2(){//第一步:获取SqlSession对象SqlSession sqlSession= MybaitsUtils.getSqlSession();//方式一:getMapper 获取代理对象daoUserDao userDao=sqlSession.getMapper(UserDao.class);Map<String,Object> map=new HashMap<String, Object>();map.put("userid",5);map.put("username","hellow");User11 userById2 = userDao.getUserById2(map);System.out.println(userById2);sqlSession.close();}//8.模糊查询@Testpublic void getUserLike(){//第一步:获取SqlSession对象SqlSession sqlSession= MybaitsUtils.getSqlSession();//方式一:getMapper 获取代理对象daoUserDao userDao=sqlSession.getMapper(UserDao.class);//List<User11> user11List=userDao.getUserLike("%李%");List<User11> user11List=userDao.getUserLike("李");for (User11 user11 : user11List) {System.out.println(user11);}sqlSession.close();}}
6.
7.
8.
MyBatis:万能Map和模糊查询(狂神)相关推荐
- Mybatis基础学习之万能的Map和模糊查询
前言: 小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个学习Java半年多时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师. 这个Mybatis ...
- key map 模糊查找_使用Map和模糊查询
Map和模糊查询 在某些时候我们只需要给MyBatis传递几个参数而不是一个完整的对象,如仅仅update表中的两三个属性.此时parameterType设置为一个pojo显然不合适.可以考虑使用Ma ...
- MyBatis注解实现like模糊查询
问题描述 SpringBoot下使用mybatis注解方式进行模糊查询时发生错误,结果报错:Parameter index out of range (1 > number of paramet ...
- 【Mybatis+springBoot】实现模糊查询
[Mybatis+springBoot]实现模糊查询 pojo 数据库 Mapper接口类 Service ServiceImpl Mapper.xml配置文件 Controller 测试 参考资料 ...
- MyBatis中万能的Map和模糊查询
文章目录 1.假设实体类或者数据库中的表的字段过多,应当考虑使用Map 2.使用Map,可以不用把表的属性全写出来,只要写需要的属性 3.模糊查询 Map传递参数,直接在sql中取出key即可 对象传 ...
- Mybatis中(#{ })模糊查询like(使用oracle的concat函数嵌套拼接SQL)
需求: 模糊查询需要左右各拼接一个'%',如:like %key% . 项目情况: mybatis中动态传参一般采用占位符#{key}.使用数据库:orecle. 错误的尝试: 尝试使用: like ...
- mybatis学习之路----模糊查询实现
点滴记载,点滴进步,愿自己更上一层楼. 废话不多说,进入主题. 项目还是在上篇 mybatis学习之路----非代理方式的增删改查用法 基础之上进行开发 一个简单的模糊查询sql. SELECT * ...
- Mybatis学习笔记6 模糊查询like
1.模糊 like 模糊查询的实现有两种方式, 一是java代码中给查询数据加上"%"; 二是在mapper文件sql语句的条件位置加上"%". 需求:查询姓名 ...
- @MyBatis注解实现动态模糊查询
@使用MyBatis注解的方式实现动态模糊且多表查询 一.使用环境及基本信息: 1.项目环境及框架:JDK1.8 + Maven + SpringBoot + MyBatis 2.使用的插件:TkMa ...
最新文章
- 物联网架构成长之路(3)-EMQ消息服务器了解
- hdu5384(AC自动机+纪录重复单词出现的次数)
- JS中的Math.ceil和Math.floor函数的用法
- 干不掉的钉钉:从哪来,往哪去?
- win10 vscode 无法激活python 虚拟环境的解决办法
- 陈国良院士将出席“首届对象存储技术与应用大会”
- 基于深度卷积神经网络的玉米病害识别
- Kubernetes之持久化存储
- 11月热门下载资源TOP100强力推荐!
- springmvc jsp java_java-jsp springmvc-controller 传值到页面的方法
- 深度卷积神经网络是什么,卷积神经网络结构设计
- 笔记本电脑设置WIFI热点(解决:校园网一个账号只能一台设备登录)
- mysql 创建utf-8数据库_mysql 创建utf-8数据库
- 离散数学中求合取范式析取范式
- 【金融项目】尚融宝项目(七)
- 原生JS如何在在指定位置插入元素,前面、后面
- 那些在一个公司死磕了5-10年的人,最后都怎么样了?
- 手机尾号(%d的深度使用)
- CHAP7 软件项目进度计划
- oracle 分区表 变大,Oracle11G新特性:分区表分区默认segment大小64k变为8M