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"><select id="retrieveAllCount" resultType="java.lang.Integer"> select count(*) from sm_user </select> <select id="retrieveByCodeAndPwd" resultType="com.iandtop.saas.smartpark.vo.UserVO"> select * from sm_user WHERE user_password = #{password} and user_code = #{code} </select> <select id="retrieveByCode" resultType="com.iandtop.saas.smartpark.vo.UserVO"> select * from sm_user WHERE user_code = #{code} </select>
</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各个框架太多,能简洁干嘛要复杂?我就奇了怪了。如果整天只是满脑子的各种框架的使用和配置方法那真是弱爆了。