文章目录
一、SQL映射文件
SQL映射是MyBatis框架最具有特色的部分,功能强大且使用简单
1.1 SQL映射文件中的几个顶级元素
属性 | 描述 |
---|---|
mapper | SQL映射文件的根元素,只有一个属性namespace,用于区分不同的mapper,必须全局唯一 |
cache | 为给定命名空间配置缓存 |
cache—ref | 引用其他命名空间中的缓存配置 |
resultMap | 用来描述查询结果集中的字段和Java实体类属性的对应关系 |
sql | 定义可重用的SQL语句块,可以在其他语句映射中引用,提高编写和维护SQL语句的效率 |
insert | 映射insert语句 |
update | 映射update语句 |
delete | 映射delete语句 |
select | 映射select语句 |
二、MyBatis框架的条件查询
2.1 实现单一条件查询
属性 | 描述 |
---|---|
id | 1.命名空间中唯一的标识符 2.接口中的方法与映射文件中的SQL语句id一一对应 |
parameterType | 传入SQL语句的参数类型 |
resultType | SQL语句返回值类型的完全限定名或别名 |
//接口
SysUser findUserById(Integer id);
//xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="work.mapper.SysUserMapper">
<select id="findUserById" resultType="work.entity.SysUser">
select * from t_sys_user where id=#{
id}
</select>
</mapper>
//测试类
public static void main(String[] args) {
SqlSession sqlSession = null;
try {
sqlSession = SysUserUtil.getSqlSession();
SysUserMapper mapper = sqlSession.getMapper(SysUserMapper.class);
SysUser userById = mapper.findUserById(2);
System.out.println(userById);
} catch (IOException e) {
e.printStackTrace();
}finally {
SysUserUtil.closeSqlSession(sqlSession);
}
}
2.2实现多条件查询
1.将查询条件封装成Java对象作为入参
//接口
List<StorageRecord> findRecord(StorageRecord storageRecord);
//xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="work.mapper.StorageRecordMapper">
<select id="findRecord" resultType="work.entity.StorageRecord">
select srCode,goodsName,supplierId,totalAmount,payStatus,createdTime
from t_storage_record
where goodsName like concat('%',#{
goodsName},'%') and supplierId=#{
supplierId} and payStatus=#{
payStatus}
</select>
</mapper>
//测试类
public static void main(String[] args) {
SqlSession sqlSession = null;
try {
sqlSession = SysUserUtil.getSqlSession();
StorageRecordMapper mapper = sqlSession.getMapper(StorageRecordMapper.class);
StorageRecord storageRecord = new StorageRecord();
storageRecord.setGoodsName("咖啡");
storageRecord.setSupplierId(14);
storageRecord.setPayStatus(2);
List<StorageRecord> record = mapper.findRecord(storageRecord);
for (StorageRecord storageRecord1 : record) {
System.out.println(storageRecord1);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
SysUserUtil.closeSqlSession(sqlSession);
}
}
2.将查询条件封装成Map对象作为入参
//接口
List<StorageRecord> findRecord(Map<String,Object> StorageRecored);
//xml文件
<?xml version="1.0" encoding="UTF-8" ?>