实体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各种查询的更多相关文章

  1. Mybatis关联查询和数据库不一致问题分析与解决

    Mybatis关联查询和数据库不一致问题分析与解决 本文的前提是,确定sql语句没有问题,确定在数据库中使用sql和项目中结果不一致. 在使用SpringMVC+Mybatis做多表关联时候,发现也不 ...

  2. myBatis批量查询操作,xml中使用foreach案例

    使用场景:有一个订单表,实体类为OrderBase.java,订单有个状态为status值可能为"1,2,3,4,5,6",现在需要查询状态为"2,3,4"的订 ...

  3. MyBatis关联查询 (association) 时遇到的某些问题/mybatis映射

    先说下问题产生的背景: 最近在做一个用到MyBatis的项目,其中有个业务涉及到关联查询,我是将两个查询分开来写的,即嵌套查询,个人感觉这样更方便重用: 关联的查询使用到了动态sql,在执行查询时就出 ...

  4. MyBatis基础:MyBatis关联查询(4)

    1. MyBatis关联查询简介 MyBatis中级联分为3中:association.collection及discriminator. ◊ association:一对一关联 ◊ collecti ...

  5. MyBatis关联查询,一对多关联查询

    实体关系图,一个国家对应多个城市 一对多关联查询可用三种方式实现: 单步查询,利用collection标签为级联属性赋值: 分步查询: 利用association标签进行分步查询: 利用collect ...

  6. Ibatis/Mybatis模糊查询

    Ibatis/Mybatis模糊查询 根据网络内容整理 Ibatis中 使用$代替#.此种方法就是去掉了类型检查,使用字符串连接,不过可能会有sql注入风险. Sql代码 select * from ...

  7. MyBatis一对一查询

    ---------------------siwuxie095                                 MyBatis 一对一查询         以订单和用户为例,即 相对订 ...

  8. MyBatis高级查询

    -------------------------siwuxie095 MyBatis 高级查询 1.MyBatis 作为一个 ORM 框架,也对 SQL 的高级查询做了支持, MyBatis 高级查 ...

  9. 在MyBatis中查询数据、涉及多参数的数据访问操作、插入数据时获取数据自增长的id、关联表查询操作、动态SQL、关于配置MyBatis映射没有代码提示的解决方案

    1. 单元测试 在单元测试中,每个测试方法都需要执行相同的前置代码和后置代码,则可以自定义2个方法,分别在这2个方法中执行前置代码和后置代码,并为这2个方法添加@Before和@After注解,然后, ...

  10. 在数据库中添加数据以后,使用Mybatis进行查询结果为空

    在数据库中添加数据以后,使用Mybatis进行查询结果为空,这是因为数据库中添加数据忘记commit的缘故.

随机推荐

  1. 4、1 IK分词器

    我们在浏览器地址栏输入 http://127.0.0.1:9200/_analyze?analyzer=chinese&pretty=true&text=我是程序员 默认的中文分词是将 ...

  2. Java 文件下载工具类

    Java 文件下载工具类 import org.slf4j.Logger; import org.slf4j.LoggerFactory; private static Logger logger = ...

  3. [转帖]Linux - NetworkManager网络管理工具

    Linux - NetworkManager网络管理工具 linux运维菜 发布时间:18-10-3020:32优质原创作者 简介 网络管理器(NetworManager)是检测网络.自动连接网络的程 ...

  4. java 微信开发的工具类WeChatUtils

    import com.alibaba.fastjson.JSONObject;import com.bhudy.entity.BhudyPlugin;import com.bhudy.service. ...

  5. js基础——数组的概念及其方法

    数组: 概念:是一种特殊的对象. 与普通对象的区别:a.普通对象使用字符串作为属性名,而数组使用数字作为索引来操作元素: b.数组的存储性能比普通对象好 数组的标志:[ ] 数组的索引:是从0开始的整 ...

  6. 使用Duilib开发Windows软件(2)——控件的基本介绍

    XML 先学习xml https://www.w3cschool.cn/xml/xml-xml-tutorialhc4o1t5m.html 控件 上图是我们下载的NIM_Duilib_Framewor ...

  7. Django-redis配置cache和session

    CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", &q ...

  8. Java非常好用的反射框架Reflections

    MAVEN 坐标 <dependency> <groupId>org.reflections</groupId> <artifactId>reflect ...

  9. C#如何调用C++(基础篇)

    闲暇之余,记一下笔记!记录一下c#如何调用C++的动态库(dll). 步骤: 一.创建一个C++类,例如: AddOperate.h extern _declspec(dllexport) int S ...

  10. Keras 笔记

    1. 从 meta 模型恢复graph,   修改node  并保存 from __future__ import absolute_import from __future__ import div ...