Mybatis学习 - 开发总结

一、代理开发方式

  • 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
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>