Nope. Your solution is fine.
Cheers,
Clinton
On 2/12/06, wang lei <[EMAIL PROTECTED]> wrote:
I am soryy not to agree to your opinions.You said the <dynamic> xml is simpler than the code.Now i want to write it in detail.the code is the following;int id=...int min=...int max=...//get value from the servlet parameterIQuery t_AllQuery = this.dao.newQuery(User.class);
if(id>0)
{
IQuery t_Query = this.dao.newQuery(User.class);
t_Query.addEqualTo("equal", new Integer(id));
t_AllQuery.addOrCriteria(t_Query);
}
if(min>0)
{
IQuery t_Query = this.dao.newQuery(User.class);
t_Query.addEqualTo("min", new Integer(min));
t_AllQuery.addOrCriteria(t_Query);
}
if(max<1000000)
{
IQuery t_Query = this.dao.newQuery(User.class);
t_Query.addEqualTo("max", new Integer(max));
t_AllQuery.addOrCriteria(t_Query);
}Now if the following urls are:example.do?id=12&min=100example.do?min=100example.do?id=12&max=100......8 urls can listed and 8 sql statements will be executed.Now may be 8 <dynamic> statement to support this query.< /DIV>With the increment of the condition, more sqls will be added,it's difficult to maintain.So i can't agree to your opinions of "the dynamic tag is simpler".And which one is easy to understand, "java code" or xml.for me,8 <dynamic> xml will be more difficult to maintain and understand.If you have a good solution or any idea,just give me,Thanks for your help.Addtionaly:why I need to implement a dao to support ojb,hibernate and ibatis,even jdbc.because our company has some products to sell,some time these products is needed to work with some products from other companies.So w e must have a common dao to support plantation.>
> As far as I can tell, the dynamic SQL example you gave is shorter than
> the Java code you wrote (if you get rid of the redundant CDATA sections).
>
> That said, I understand your point. A future goal for iBATIS SQL Maps
> (Data Mapper) will be to more easily support ad-hoc queries and
> configuration via the Java API. This will help you get to where you want
> to be. Unfortunatley it's not available yet.
>
> Cheers,
> Clinton
>
> wang lei wrote:
>
>> At first, thanks for the quick reply from Brandon Goodin.
>> I use java for 3 years.
>> My major work is to provide small base libraries or swing and swt
>> controls for the developers in our company.
>> I don't have much experien ce in big projects.
>> So my opinions is just based on the small or medium projects.
>> My idea for "design" is simple. I try to make the developer know how
>> to use my library in 1-3 hours.The simplicity is what i need.
>> I think i understand what Brandon Goodin said.
>> The strength of ibatis is make it easy to use the database's
>> characteristic.
>> If i use ibatis,i should use sql instead of the "Criteria".
>> But i want more simplicity and flexibility.
>> The following is a example.
>> int id=...
>> int min=...
>> int max=...
>> //get value from the servlet parameter
>> IQuery t_AllQuery = this.dao.newQuery(User.class);
>> if(id>0)
>> {
>> IQuery t_Query = this.dao.newQuery (User.class);
>> t_Query.addEqualTo("equal", new Integer(id));
>>
>> t_AllQuery.addOrCriteria(t_Query);
>> }
>>
>> if(min>0)
>> {
>> IQuery t_Query = this.dao.newQuery(User.class);
>> t_Query.addEqualTo("min", new Integer(min));
>>
>> t_AllQuery.addOrCriteria(t_Query);
>> }
>>
>> if(max<1000000)
>> {
>> IQuery t_Query = this.dao.newQuery(User.class);
>> t_Query.addEqualTo("max", new Integer(max));
>>
>> t_AllQuery.addOrCriteria(t_Query);
>> }
>> the java code above is common in out projects.
>> How many <dynamic> sql i need to write.
>> I write one example.
>> <sql id="selectUserWhere">
>> <dynamic prepend="where">
>> <isPropertyAvailable prepend="and" property="equal">
>> <![CDATA[
>> USER_ID=#equal#
>> ]]>
>> <isPropertyAvailable prepend="or" property="min">
>> <![CDATA[
>> USER_ID>#min#
>> ]]>
>> <isPropertyAvailable prepend="and" property="max">
>> <![CDATA[
>> USER_ID<#"max"#
>> ]]>
>> </isPropertyAvailable>
>> </isPropertyAvailable>
>> </isPropertyAvailable>
>> </dynamic>
>> </sql>
>> <select id="doSelectUser" parameterClass="java.util.Map "
>> resultMap="userResult">
>> <![CDATA[
>> Select USER_ID, USER_NAME, PHOTO, USER_MEMO from DEMO.USER_T
>> ]]>
>> <include refid="selectUserWhere" />
>> </select>
>> If there is no the parameter of "equal".
>> the sql for execution will be
>> "Select USER_ID, USER_NAME, PHOTO, USER_MEMO from DEMO.USER_T".
>> I want to know h ow can i make it easy to handle it.
>>
想成为冯小刚、陈凯歌、张纪中三大导演的主角吗?
