mybatis支持注解sql语句,如:

package com.iandtop.jxy.mapper;

import com.iandtop.saas.smartpark.vo.UserVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**

  • @author andyzhao
    */
    @Mapper
    public interface LoginMapper {

@Select("select count(*) from sm_user")
Integer retrieveAllCount() throws RuntimeException;

@Select("select * from sm_user WHERE user_password = #{password} and user_code = #{code}")
List<UserVO> retrieveByCodeAndPwd(@Param("code") String code, @Param("password") String password) throws RuntimeException;

@Select("select * from sm_user WHERE user_code = #{code}")
List<UserVO> retrieveByCode(@Param("code") String code) throws RuntimeException;

@Select("SELECT * FROM SM_USER WHERE pk_user = #{pk_user}")
UserVO findByPK(@Param("pk_user") String pk_user);

}

 

但是常用的还是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="com.iandtop.jxy.mapper.LoginMapper">
&lt;select id="retrieveAllCount" resultType="java.lang.Integer"&gt;
    select count(*) from sm_user
&lt;/select&gt;
&lt;select id="retrieveByCodeAndPwd" resultType="com.iandtop.saas.smartpark.vo.UserVO"&gt;
    select * from sm_user WHERE user_password = #{password} and user_code = #{code}
&lt;/select&gt;
&lt;select id="retrieveByCode" resultType="com.iandtop.saas.smartpark.vo.UserVO"&gt;
    select * from sm_user WHERE user_code = #{code}
&lt;/select&gt;

</mapper>

 

 

到底选哪一种呢?我选xml:

1 首先官方也是推荐使用xml。

2 注解方式拼接动态sql功能有限。

3 java又和sql搞到一起了感觉很不爽。

 

网上有说“按需使用"的(http://www.cnblogs.com/java-zhao/p/5120792.html),大致意思就是说如果”复杂“就用xml,剩下的就用注解。

那为什么这么复杂,干嘛不干脆用xml就得了?

网上有说“注解和xml的一起使用http://blog.csdn.net/xinxin9202/article/details/51019929),大致就是一个工程一会用注解一会用xml。

那为什么这么复杂,干嘛不干脆用xml就得了?

 

总结:

1 注解也许有很多优点,但是哪位同胞可以好心告诉我下?

2 Java各个框架太多,能简洁干嘛要复杂?我就奇了怪了。如果整天只是满脑子的各种框架的使用和配置方法那真是弱爆了。