前言
MyBatis的映射文件与核心文件内为我们提供很多的标签,可以帮助我们实现复杂的数据库操作,并且可以简化代码,增加可读性
一、映射文件
1.动态SQL语句
1.1、if
根据实体的不同取值,通过if可以帮助我们实现使用不同的SQL语句来查询
<select id="findByCondition" resultType="user" parameterType="user">
select * from user1
<where>
<if test="id!=0">
and id=#{id}
</if>
<if test="username!=null">
and username=#{username}
</if><if test="password!=null">
and password=#{password}
</if>
</where>
</select>
2.foreach
<select id="findByIds" parameterType="list" resultType="user">
select * from user1
<where>
<foreach collection="list" open="id in (" close=")" item="id" separator=",">
#{id}
</foreach>
</where>
</select>
2.sql片段抽取
利用sql标签将相同的sql语句抽取出来,方便后续的一些修改。
<sql id="selectUser" >
select * from user1
</sql>
利用include标签进行引用
<include refid="selectUser"></include>
3.映射文件常用配置
二、核心文件配置
1.typeHandlers
2.plugins标签——插件标签
1.导入坐标
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
2.在核心文件中进行插件的配置
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 使用MySQL方言的分页 -->
<property name="helperDialect" value="mysql"/><!--如果使用mysql,这里value为mysql-->
<property name="pageSizeZero" value="true"/>
</plugin>
</plugins>
3.分页参数的设定
public class MyBatisTest {
@Test
public void test1() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//设置分页参数
PageHelper.startPage(1,3);
//mapper类调用方法实现查询
List<User> userList = mapper.findAll();
for (User user : userList) {
System.out.println(user);
}
}
注意:映射文件中的sql语句不发生任何变化,只需要在调用方法进行查询前,利用pageHelper来进行分页的参数设定即可。
获得分页相关的参数:
核心文件常用标签