查找姓名,并返回一个字符串集合
select ename from emp
查找入职日期,并返回一个日期集合
运行截图 二、使用新定义TO对象接收多列查询结果,使用Map集合接收多列查询结果 实现代码查找姓名,日期并存入新定义的EnameAndYear对象
EnameAndYear对象类
public class EnameAndYear { private String ename; private Integer year; public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public Integer getYear() { return year; } public void setYear(Integer year) { this.year = year; } @Override public String toString() { return "EnameAndYear{" + "ename='" + ename + ''' + ", year=" + year + '}'; } }
查询姓名,工资和津贴的总和,返回一个map集合,注意如果工资和津贴有一个为null的情况下需要使用ifnull()函数
运行截图 三、在查询中使用一个列作为查询条件结果封装为实体类 实现代码
查询薪水大于传入参数的所有信息
查询名字含有参数的所有信息
运行截图 四、在查询中用新定义TO对象作为参数实现多条件查询,在查询中使用Map集合作为参数实现多列条件查询 实现代码
将查询条件封装成JobAndSal对象查询工作为job,且薪水大于sal的所有信息,返回一个emp数组
JobAndSal实现类
public class JobAndSal { private String job; private Float sal; public String getJob() { return job; } public void setJob(String job) { this.job = job; } public Float getSal() { return sal; } public void setSal(Float sal) { this.sal = sal; } }
将查询条件封装为map查询名字含有n,且入职日期大于date的所有信息返回值为emp集合
运行截图 五、实现一次包含 连接 聚合分组 的查询(可以再包含子查询) 实现代码
通过两个有外键约束的表进行查询,查询每个部门的部门名和平均薪资,返回值为map集合
运行截图 六、使用实体类作为查询条件实现动态查询,有设置属性的添加为查询条件 实现代码
传入一个emp对象作为参数,通过emp中包含的属性进行动态查询,如果没有设置该属性则不会动态生成有关此属性的查询语句(if标签为不满足test里的条件则不生成,where标签会结合if自动生成where...条件语句)
(choose语句会优先判断前一个 when中的test是否成立,如果成立则以第一个when中的条件进行查询,如不成立则使用otherwise中的条件进行查询) 运行截图 七、使用${} 实现 排序查询,排序列与升降序方式可变 实现代码 #{} 是预编译处理,${}是字符串替换。 Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的 set 方法来赋值; Mybatis 在处理${}时,就是把${}替换成变量的值。 使用#{}可以有效的防止 SQL 注入,提高系统安全性。 ${}使用在orderby 后,表示查询列约束以及 asc(升序排列) 或者desc(降序排列) #{}使用范围比${}更大,一般能使用#{}的地方${}也能使用
运行截图
八、实现一次limit分页查询 实现代码传入包含key=“begin”,key=“length”的map作为参数分页查询emp表的信息,mysql中的列是从0开始,故要查询第一排数据可以写成select * from emp limit 0,1
运行截图 九、实现列名与属性名不对等的resultMap配置,并在查询中实现 实现代码select * from emp limit #{begin},#{length}
ID标签写入数据库中主键所包含的列名,类型,java类中的类型 result标签写入数据库与接收类不一致的列名,如一致可以不写。
查询emp表所有信息
从下图可以看出我定义的类属性名和数据库的字段名不能一一对应,通过resultmap配置后可以进行查询
运行截图