mybatis中写sql的三种方式

时间:2025-03-17 08:11:47

1. 在mapper文件中配置SQL

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN" "/dtd/">
<mapper namespace="">

	<select  resultType="FinanceRefundApplyModel" parameterType="String">
		select * from FINANCE_REFUND_APPLY where ID = #{id}
	</select>

</mapper>

2. 注解式的SQL定义

public interface UserMapper {   
    @Select("select * from user ")
    List<User> AnnotationGetUserList();
}

 如果想要的是动态SQL,那么就加上<script>:
 

public interface UserMapper {
    
    @Select("select * from user ")
    List<User> AnnotationGetUserList();
    
    @Select("<script>"
            + "select * from user "
            + "<if test='id!=null'>"
            + "where id=#{id}"
            + "</if>"
            + "</script>")
    List<User> AnnotationGetUserById(@Param("id")String id);
}

3.通过@SelectProvider来声明sql提供类

public interface UserMapper {
    @SelectProvider(type=,method="getUserById")
    List<User> AnnotationProviderGetUserById(String id);
}
public class SqlProvider {
    public String getUserById(String id) {
        String sql = "select * from user ";
        if (id!=null) {
            sql += "    where id="+id;
        }
        return sql;
    }
}