前段时间,看了看Mybatis官方文档,在自己跟着做了两个例子后,准备在实际项目中用一用。下面我从实招来,在项目中遇到的一些坑。
Mybatis框架的大体思路是,1.自定义SQL语句,2.将语句和对应的方法关联,3.使用之。套路如下:
1.SQL语句可以通过xml或者java代码代码生成对应的SQL语句或者通过诸如@Select
注解来定义,都是ok的,官方推荐用xml,因为其表达能力更强,官方也做了更好的适配。
2.在语句与方法映射这一步,可以使用<mapper>
标签进行注册,然后通过sqlSession的一系列方法使用之,也可以自己定义一个接口,在接口中定义方法来实现映射。
关于第一部分:
前两种方式都可以写动态的SQL语句,第三种方式貌似只能写静态的SQL语句,这里动态的意思是指根据条件来添加对应的语句。
比如:
1.通过xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mappers.GoodsMapper">
<select id="selectGoods" resultType="com.zeng.domain.Goods" parameterType="map">
SELECT * FROM goods
<where>
<if test="platform != null">
platform = #{platform}
</if>
<if test="fundType != null">
AND fund_type = #{fundType}
</if>
</where>
</select>
</mapper>
2.通过java代码:
package com.zeng;
import org.apache.ibatis.jdbc.SQL;
import java.util.Map;
/**
* Created by zeng on 17-3-1.
*/
public class GoodsDaoSelectProvider {
static String platform;
static String fundType;
static Integer pageSize;
static Integer pageNum;
public static St