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的缘故.
随机推荐
- java访问磁盘文件
转载,务必写上原文链接 !(尊重与你分享知识的人) 目录 文件 File 对象 VS FileDescriptor 对象 文件讲解java访问磁盘文件过程 fileReader.read() 图解ja ...
- laravel6.0路由
1.基本路由路由定义在routes目录下,路由执行是在控制器之前,路由路径 routes目录下api.php 关于接口路由定义文件包含的路由位于 api 中间件组约束之内,支持频率限制功能,这些路由是 ...
- yii2中 选择布局的方式,可以设置不使用布局
###yii2中 选择布局的方式,可以设置不使用布局 控制器内成员变量 public $layout = false; //不使用布局 public $layout = "main" ...
- MongoDB 范围查询
查询价格在200-9000 $gt 大于 $lt 小于 //查询价格200-9000范围的数据 db.prodgory.find({"}}) 查询给定范围数据 $ ...
- WUSTOJ 1241: 到底是几月几日?(Java)
1241: 到底是几月几日? 题目 输入年月日,输出当前日期是当年的第几天,输入年份和第几天,输出当前日期.更多内容点击标题. 说明 算是水题吧,仅提供代码做参考,不做分析.代码没用JDK自带 ...
- pandas之分组计算笔记
分组计算三部曲:拆分-->应用-->合并 分组:就是按照行或列把相同索引的部分分到一起 分组的关键词为groupby,分组后我们就可以对每组数据进行同一操作,返回的是每组数据分别计算后的结 ...
- 十四、i2c子系统
由于之后的触摸屏驱动分析中使用到了GPIO子系统和i2c子系统,因此在分析触摸屏驱动之前我准备把这两个子系统进行简单分析. 在读者学习本章以及后续i2c相关章节之前,最好了解i2c通信方式,可以参考: ...
- Pod——状态和生命周期管理及探针和资源限制
一.什么是Podkubernetes中的一切都可以理解为是一种资源对象,pod,rc,service,都可以理解是 一种资源对象.pod的组成示意图如下,由一个叫”pause“的根容器,加上一个或多个 ...
- Intercity Travelling CodeForces - 1009E (组合计数)
大意: 有一段$n$千米的路, 每一次走$1$千米, 每走完一次可以休息一次, 每连续走$x$次, 消耗$a[1]+...+a[x]$的能量. 休息随机, 求消耗能量的期望$\times 2^{n-1 ...
- SQL查询oracle数据库最近备份情况
需求,查询RMAN备份情况,通过视图进行查询 SQL> //,) input_g, round(OUTPUT_BYTES///,) output_g order by ; SID OUTPUT_ ...