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的缘故.
随机推荐
- 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验三《敏捷开发与XP实践》 实验报告
实验内容与要求 1.XP基础 极限编程(Extreme Programming,XP)是一种全新而快捷的软件开发方法.XP团队使用现场客户.特殊计划方法和持续测试来提供快速的反馈和全面的交流: XP是 ...
- Python基础——循环语句、条件语句、函数、类
注:运行环境 Python3 1.循环语句 (1)for循环 注:for i in range(a, b): #从a循环至b-1 for i in range(n): #从0循环至n-1 ...
- Longest Line of Consecutive One in Matrix
Given a 01 matrix, find the longest line of consecutive 1 in the matrix. The line could be horizonta ...
- [转帖]MMU内存管理单元
MMU内存管理单元 https://www.cnblogs.com/alantu2018/p/9002309.html 之前对这一块一直不理解 最近学习了点 CPU time slice 以及 con ...
- 【C++札记】构造函数与析构函数
构造函数(constructor) 1.构造函数是种特殊的类成员函数,遵循如下规则: a.函数名与类名必须相同. b.没有返回值 例如: class Obj { ... public: Obj() { ...
- 利用Python进行数据分析_Pandas_层次化索引
申明:本系列文章是自己在学习<利用Python进行数据分析>这本书的过程中,为了方便后期自己巩固知识而整理. 层次化索引主要解决低纬度形式处理高纬度数据的问题 import pandas ...
- AtCoder练习
1. 3721 Smuggling Marbles 大意: 给定$n+1$节点树, $0$为根节点, 初始在一些节点放一个石子, 然后按顺序进行如下操作. 若$0$节点有石子, 则移入盒子 所有石子移 ...
- Golang语言编程规范
Golang语言编程规范 一.说明 编程规范好,可避免语言陷阱,可有利团队协作,有利项目维护. 正常的Go编程规范有两种:编译器强制的(必须的),gofmt格式化非强制的(非必须). Go宣告支持驼峰 ...
- 区间dp最长回文子序列问题
状态转移方程如下: 当i > j时,dp[i,j]= 0. 当i = j时,dp[i,j] = 1. 当i < j并且str[i] == str[j]时,dp[i][j] = dp[i+1 ...
- CentOS7/RHEL6下,如何查看目录与子目录大小
原文:CentOS7/RHEL6下,如何查看目录与子目录大小 通过强大的[du]命令,可以帮助我们快捷的查看目录的大小,非常实用. du命令用来查看目录或文件所占用磁盘空间的大小.常用选项组合为:du ...