一、代理开发方式
-
mybatis代理开发方式是当前企业开发的主流
-
Mapper接口开发方法只需要程序员编写Mapper接口,有Mybatis框架根据接口定义创建接口的动态代理对象。
-
Mapper接口开发需要遵循以下规范:
(1)Mapper.xml文件中的namespace与mapper接口的全限定名相同
(2)Mapper.xml中定义的每个statement的id和Mapper接口的方法名相同
(3)Mapper.xml中定义的每个sql的parameterType的类型和Mapper接口方法的输入参数类型相同
(4)Mapper.xml中定义的每个sql的resultType的类型和Mapper接口方法的输出参数类型相同 -
DEMO
在核心配置文件中加入映射配置文件:
<!-- 核心配置文件SqlMapConfg.xml -->
<typeAliases>
<typeAlias type="mybatis.model.User" alias="user"/>
</typeAliases>
<mappers>
<mapper resource="mapper/proxy/UserMapper.xml"/>
</mappers>
<!-- 映射配置文件 -->
<!-- mapper 根标签;
namespace 命名空间,与下面的语句id一起组成查询的标识 -->
<mapper namespace="mybatis.mapper.UserMapper">
<!-- mybatis中默认定义了typeAlias, 所以这里type可以直接使用int,对应Integer
user则在核心配置文件中使用了typeAlias标签定义 -->
<select id="queryById" parameterType="int" resultType="user">
select * from user where id=#{id}
</select>
</mapper>
package mybatis.mapper;
public interface UserMapper {
User queryById(Integer id);
}
测试用例
// 加载核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
// 获得sqlSession工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
// 获取代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
System.out.println(userMapper.queryById(1));
sqlSession.close();
附:mybatis默认定义的typeAlias
二、动态SQL语句
<if>
<foreach>
<where>
<sql> sql片段抽取
三、例子
XxxMapper.xml
<select id="selectUsers" resultType="javaModel">
select
uuid uuid,
passenger_id passengerId,
create_time createTime,
register_type registerType
from t_recommend
where status=1
</select>