MyBatis注解方式实现DAO接口,一般用于简单的sql语句,比如简单条件下的单表操作,复杂的sql使用该方式太繁琐,不易于维护;
@Repository
public interface UserMapper {
@Select("SELECT id,name FROM user where age>=#{age} LIMIT 10")
List<User> getUserList(Byte age);
@Select("SELECT id,username FROM user LIMIT 1")
User getOne();
@Insert("INSERT INTO user(name,age) values(#{name},#{age})")
Integer add(User user);
@Update("UPDATE user SET name=#{name},age=#{age} WHERE id=#{id}")
Integer update(User user);
}
有几点需要说明:
- 如何在sql中使用变量?
在sql中需要传入的变量是复杂或者不确定的,如果每个变量都需要对应一个入参,那就没法玩了。但是方法中可以传入一个对象,MyBatis允许我们在sql语句里直接使用相应的属性作为变量即可,作为新手以为需要这样用:
SELECT id,name FROM user where age>=#{user.age} LIMIT 10
其实完全没必要,直接写对象属性即可~!
- 字段值是否需要单引号包裹?
答案是否定的,在参数占位符 #{} 进行变量替换时,会自动加上单引号
- 关于DML语句的返回值问题
上一篇文章已经提及,必须在jdbc连接参数上带上 useAffectedRows=true ,否则返回结果不正确;
注解模式差不多就遇到这些问题,如果是更复杂的sql语句,请使用xml方式处理;







网友评论