Mybatis各种查询
实体Emp
private int empno;
private String ename;
private String job;
private Integer mgr;
private Date hiredate;
private Double sal;
private Double comm;
private int deptno;
dao层:
public List<Emp> empList();
//多条件查询
public List<Emp> empslist(String ename, String job);
public void AddEmp(Emp emp);
public Emp ToupdateEmp(int id);
public void UpdateEmp(Emp emp);
public void DeliteEmp(int id);
//根据名字查询(因为名字不是唯一)
public List<Emp> findbyename(String ename);
//根据名字和工作查询(因为名字和工作在一起是唯一,用户密码)
//public Emp findbysome(String ename,String job);
public Emp findbysome(Map<String, Object> paMap);
//根据名字和工作单位和牌号查询
//public List<Emp> findbysome(String ename,String job,int mgr);
public List<Emp> findbysomesome(Emp emps);
//模糊查询
public List<Emp> likeEmps(String ename);
映射文件
<?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.xml 中的namespace 设置为 mapper.java 的全限定名。 -->
<!-- 该映射文件取代了dao的实现类
namespace是指要实现的接口的全限定名 -->
<mapper namespace="com.oak.dao.EmpDao">
<!-- 所有的查询使用select 插入insert 更新 update 删除 delete
id在当前映射文件中不允许重复,要和接口的方法名保持一致
resultType表示方法的返回类型,如果返回类型中有泛型,则只描述泛型即可-->
<select id="empList" resultType="com.oak.entity.Emp">
select * from emp
</select>
<insert id="AddEmp" parameterType="com.oak.entity.Emp">
<!-- 使用序列生成主键值
keyProperty="aid"表示主键对应的属性,
order="BEFORE"表示生成id序列值时机:before表示在insert前,after表示在insert后
resultType="int"表示序列值的类型
-->
<selectKey keyProperty="empno" order="BEFORE" resultType="int">
select seq_customer_id.nextval from dual
</selectKey>
<!-- #{参数}代替了占位符? -->
insert into emp values(#{empno},#{ename},#{job},#{mgr},#{hiredate},#{sal},#{comm},#{deptno})
</insert>
<select id="ToupdateEmp" resultType="com.oak.entity.Emp" parameterType="int">
select * from emp where empno = #{id}
</select>
<update id="UpdateEmp" parameterType="com.oak.entity.Emp">
update emp set job = #{job}<!-- ,ename = #{ename}, mgr = #{mgr},hiredate= #{hiredate},sal = #{sal}, comm = #{comm}, deptno = #{deptno} --> where empno = #{empno}
</update>
<delete id="DeliteEmp" parameterType="int">
delete from emp where empno = #{id}
</delete>
<!-- 根据名字查询(因为名字不是唯一) -->
<select id="findbyename" parameterType="string" resultType="com.oak.entity.Emp">
select * from emp where ename=#{adc}
</select>
<!-- //根据名字和工作查询(因为名字和工作在一起是唯一,用户密码) -->
<select id="findbysome" parameterType="java.util.Map" resultType="com.oak.entity.Emp">
select * from emp where ename = #{ename} and job = #{job}
</select>
<!-- //根据名字和工作单位和牌号查询 -->
<select id="findbysomesome" parameterType="com.oak.entity.Emp" resultType="com.oak.entity.Emp">
select * from emp where ename = #{ename} and job = #{job} and mgr = #{mgr}
</select>
<!-- 模糊查询 -->
<select id="likeEmps" parameterType="string" resultType="com.oak.entity.Emp">
select * from emp where ename like '%${value}%'
</select>
</mapper>
测试:
package com.oak.test;
import java.io.IOException;
import java.io.Reader;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.oak.dao.EmpDao;
import com.oak.entity.Emp;
public class Emp_Test {
private SqlSession session;
@Before
public void init(){
String resources = "mybatis.xml";
Reader reader;
try {
reader = Resources.getResourceAsReader(resources);
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(reader);
session = sf.openSession();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Test
public void EmpList() {
/*EmpDao empDao = session.getMapper(EmpDao.class);
List<Emp> emps = empDao.empList();*/
List<Emp> emps = session.selectList("com.oak.dao.EmpDao.empList");
System.out.println(emps);
}
@Test
public void AddEmp(){
//EmpDao empDao = session.getMapper(EmpDao.class);
Emp emp = new Emp();
emp.setComm(7803.3);
emp.setDeptno(20);
emp.setEname("高东军");
emp.setHiredate(new Date());
emp.setJob("etyrg");
emp.setMgr(2000);
emp.setSal(3000.0);
//empDao.AddEmp(emp);
session.insert("com.oak.dao.EmpDao.AddEmp", emp);
session.commit();
}
@Test
public void UpdateEmp(){
//EmpDao empDao = session.getMapper(EmpDao.class);
//Emp emp = empDao.ToupdateEmp(68);
Emp emp = session.selectOne("com.oak.dao.EmpDao.ToupdateEmp", 69);
System.out.println(emp);
emp.setJob("请厕所");
session.update("com.oak.dao.EmpDao.UpdateEmp",emp);
//empDao.UpdateEmp(emp);
session.commit();
}
@Test
public void DaleteEmp(){
//EmpDao empDao = session.getMapper(EmpDao.class);
//empDao.DeliteEmp(68);
session.delete("com.oak.dao.EmpDao.DeliteEmp", 69);
session.commit();
}
//根据名字查询(因为名字不是唯一)
@Test
public void findbyename(){
EmpDao empDao = session.getMapper(EmpDao.class);
List<Emp> ename = empDao.findbyename("FORD");
System.out.println(ename);
}
//根据名字和工作查询(因为名字和工作在一起是唯一,用户密码)
@Test
public void findbysome() {
EmpDao empDao = session.getMapper(EmpDao.class);
Map<String, Object> paMap = new HashMap<String, Object>();
paMap.put("ename", "SCOTT");
paMap.put("job", "ANALYST");
Emp emp = empDao.findbysome(paMap);
System.out.println(emp);
}
@Test
public void findbysomesome(){
EmpDao empDao = session.getMapper(EmpDao.class);
Emp emp = new Emp();
emp.setEname("SCOTT");
emp.setJob("ANALYST");
emp.setMgr(7566);
List<Emp> emps = empDao.findbysomesome(emp);
System.out.println(emps);
}
//模糊查询
@Test
public void like(){
EmpDao empDao = session.getMapper(EmpDao.class);
List<Emp> emps = empDao.likeEmps("A");
System.out.println(emps);
}
@After
public void over(){
session.close();
}
}
Mybatis各种查询的更多相关文章
- Mybatis关联查询和数据库不一致问题分析与解决
Mybatis关联查询和数据库不一致问题分析与解决 本文的前提是,确定sql语句没有问题,确定在数据库中使用sql和项目中结果不一致. 在使用SpringMVC+Mybatis做多表关联时候,发现也不 ...
- myBatis批量查询操作,xml中使用foreach案例
使用场景:有一个订单表,实体类为OrderBase.java,订单有个状态为status值可能为"1,2,3,4,5,6",现在需要查询状态为"2,3,4"的订 ...
- MyBatis关联查询 (association) 时遇到的某些问题/mybatis映射
先说下问题产生的背景: 最近在做一个用到MyBatis的项目,其中有个业务涉及到关联查询,我是将两个查询分开来写的,即嵌套查询,个人感觉这样更方便重用: 关联的查询使用到了动态sql,在执行查询时就出 ...
- MyBatis基础:MyBatis关联查询(4)
1. MyBatis关联查询简介 MyBatis中级联分为3中:association.collection及discriminator. ◊ association:一对一关联 ◊ collecti ...
- MyBatis关联查询,一对多关联查询
实体关系图,一个国家对应多个城市 一对多关联查询可用三种方式实现: 单步查询,利用collection标签为级联属性赋值: 分步查询: 利用association标签进行分步查询: 利用collect ...
- Ibatis/Mybatis模糊查询
Ibatis/Mybatis模糊查询 根据网络内容整理 Ibatis中 使用$代替#.此种方法就是去掉了类型检查,使用字符串连接,不过可能会有sql注入风险. Sql代码 select * from ...
- MyBatis一对一查询
---------------------siwuxie095 MyBatis 一对一查询 以订单和用户为例,即 相对订 ...
- MyBatis高级查询
-------------------------siwuxie095 MyBatis 高级查询 1.MyBatis 作为一个 ORM 框架,也对 SQL 的高级查询做了支持, MyBatis 高级查 ...
- 在MyBatis中查询数据、涉及多参数的数据访问操作、插入数据时获取数据自增长的id、关联表查询操作、动态SQL、关于配置MyBatis映射没有代码提示的解决方案
1. 单元测试 在单元测试中,每个测试方法都需要执行相同的前置代码和后置代码,则可以自定义2个方法,分别在这2个方法中执行前置代码和后置代码,并为这2个方法添加@Before和@After注解,然后, ...
- 在数据库中添加数据以后,使用Mybatis进行查询结果为空
在数据库中添加数据以后,使用Mybatis进行查询结果为空,这是因为数据库中添加数据忘记commit的缘故.
随机推荐
- JSP入门基础知识详细版(通俗易懂)
JSP 第一篇: 概述.原理.周期.指令.行为.内置对象.JavaBean (一) JSP概述以及简单使用 什么是JSP? JSP全名为Java Server Pages,java服务器页面.JSP是 ...
- order pick-up and delivery problem
问题一: pi表示取第i个单,di表示送第i个单.di不能在pi的前面.给一个取单送单的顺序,问是否是valid顺序. public boolean isValidOrderList(List< ...
- mysql-系统表的使用
https://blog.csdn.net/wind520/article/details/38728655
- 分布式缓存 - hash环/一致性hash
一 引言 当前memcached,redis这类分布式kv缓存已经非常普遍.我们知道memcached的分布式其实是一种"伪分布式",也就是它的服务器节点之间其实是无关联的,之间没 ...
- 剑指offer58:对称的二叉树。判断一颗二叉树是不是对称的,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的
1 题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. 2 思路和方法 定义一种遍历算法,先遍历右子结点再遍历左子结点:如对称先序 ...
- python学习-39 生成器总结
总结 1.语法上和函数类似:生成器函数和常规函数几乎是一样的.它们都是使用def语句进行定义,差别在于,生成器使用yield语句返回一个值,常规函数使用return语句返回一个值. 2.自动实现迭代器 ...
- js 颜色随机切换
生成随机颜色 方法1:RGB模式 function randomColor1() { var r=Math.floor(Math.random()*256); var g=Math.floor(Mat ...
- Python--时间模块time模块
原地址:https://finthon.com/python-time/ Python时间模块——time模块 简介 在数据处理当中,经常会碰到处理时间的问题.比如:在序列预测的过程中,需要通过学习一 ...
- 使用HSE配置系统时钟并用MCO输出监测系统时钟
使用模板,在User下新建文件夹RCC 新建bsp_rccclkconfig.h和bsp_rccclkconfig.c 工程和魔术棒添加 对照着上节的RCC源文件编写: void HSE_SetSys ...
- Eureka 注册中心一直报Connect to localhost:8761 time out 的问题
忽略了配置eureka.client.service-url.defaultZone而导致的异常,重新覆盖配置就好 client: fetch-registry: false register-wit ...