求一种管理系统中不定条件查询的实现方案

在开发一个医疗管理系统,有一个综合查询的模块。在这里用户会填写若干个条件,然后系统连接一个SQL语句,执行查询。
现在主要出现两个问题:
第一个就是多个条件如何并列?要能够表示与和或关系(使用一条where语句,然后使用同AND和 OR连接多个条件吗?还是有其他更好的办法。)求思路,如果有SQL语句的实例就更好了。。。。
第二个就是优先级问题,比如我有三个条件A、B和C。现在这三个条件的并列关系是A and B or C那么我这里的优先级是 (A and B) or C 还是什么。。。这个问题有点扯淡了,我主要想知道大部分系统中是咋做的。。。
求大神各个解决的思路。。。。。

动态拼接sql条件,要有优先级,那么加上括号好了。

有离线查询
图片说明@Test
//* 离线查询(重点)---DetachedCriteria
public void test9(){

    //模拟web层
    String pname = "小米";
    double minPrice = 20D;
    double maxPrice = 5000D;
    //直接封装DetachedCriteria
    DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Customer.class);
    detachedCriteria.add(Restrictions.like("xxx", "%"+pname+"%"));
    //...........

    //模拟service
    //将detachedCriteria传递给service

    //模拟dao层
    Session session = HibernateUtils.openSession();
    Criteria criteria = detachedCriteria.getExecutableCriteria(session);
    List<Customer> list = criteria.list();


}

通过 mybatis的 where if 标签 来判断

 <select id="advanceQuery" resultType="com.ctjy.wxmis.manager.dto.ArtDto">
        select a.id,a.art_type as artType,a.art_img as artImg,a.art_title as artTitle,a.art_content as artContent,
        a.art_url as artUrl,a.clicks,a.art_column as artColumn,a.art_from as artFrom,
        a.create_date as createDate,b.column_name as columnName,c.account,a.publish,a.summary
        from
        t_art  a
        left join t_art_column b on(a.art_column=b.id)
        left join t_login_user c on(a.create_user=c.id)
        where a. available=1 and b.available=1
            <if test="art.artTitle !=null and art.artTitle!=''">
                and a.art_title like CONCAT('%',#{art.artTitle},'%' )
            </if>
            <if test="art.artColumn !=null and art.artColumn!=''">
                and a.art_column like CONCAT('%',#{art.artColumn},'%' )
            </if>

        limit #{start},#{pagesize}