准备
准备一个User类
package mybatis.pojo;
public class User {
Integer id;
String name;
Integer age;
public User(){}
public User(Integer id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}'+'\n';
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
数据库中准备一个user表
MyBatis的各种查询功能
1.根据某个属性查询信息
2. 查询结果只有一条的时候
可以用一个实体类对象来接收,mapper.xml文件中select标签的resultType的值是实体类对象的类型,即resultType="User"。
可以用list集合接收,此时集合中只有一个元素,mapper.xml文件中select标签的resultType的值是实体类对象的类型,即resultType="User"。
可以用map集合接收,此时集合中也是只有一个元素,查询结果没有对应的实体类对象接收就可以用这个来接收,resultType="map"。
若查询的结果是单行单列的数据,直接用对应的数据类型接收就可以了,
例如:查询学生人数
<!--Integer getCount();--> <select id="getCount" resultType="java.lang.Integer"><!--resultType还可以写Integer、integer、int、Int、_int、_integer--> select count(*) from `user` </select>
3.查询结果有多条的时候
可以用实体类类型的list集合接收,resultType="map"。
mapper接口中定义方法: //查询所有用户信息 List<User> getAllUsers(); mapper.xml文件中: <!--List<User> getAllUsers();--> <select id="getAllUsers" resultType="User"> select * from `user` </select>输出结果:
可以用map类型的list集合接收,resultType="map"。
mapper接口中定义方法:
//查询多条数据为map集合
List<Map<String, Object>> getAllUserToMap1();
mapper.xml文件中:<!--Map<String, Object> getAllUserToMap1();-->
<select id="getAllUserToMap1" resultType="map">
select * from `user`
</select>
输出结果:
可以在mapper接口的方法上添加@MapKey注解,以某个字段(唯一)的值作为键,以每条数据转换的map集合作为值,放在同一个map集合中。
mapper接口中定义方法:
//查询多条数据为map集合
@MapKey("id")//以某个字段(唯一)的值作为键,以每条数据转换的map集合作为值
Map<String, Object> getAllUserToMap2();
mapper.xml文件中:<!--Map<String, Object> getAllUserToMap2();-->
<select id="getAllUserToMap2" resultType="map">
select * from `user`
</select>
输出结果:
特殊的SQL执行
1.模糊查询
有三种方式
2.批量删除
3.动态设置表名
4.获取自增的主键
结果: