/** * 修改记录 */@Update("UPDATE t_u

简介: /** * 修改记录 */@Update("UPDATE t_user SET username=#{username}, passwd=#{passwd}

Mybatis中的注解基本上都在org.apache.ibatis.annotations目录下:@MapperScan该注解存在着争议,但不可否认的是这个注解确实是Mybatis的注解,是为了集成Spring而写的注解。

org.mybatis.spring.annotation.MapperScan使用方式@SpringBootApplication@MapperScan("com.tian.mybatis.mapper")public class Application {}其实,从名字上就能看出,是用来扫描的Mapper的。

扫描包路径可以是一个或者多个,也可以在路径中可以使用 * 作为通配符对包名进行匹配 。

@SpringBootApplication@MapperScan("com.tian.*.mapper")public class Application {}@SpringBootApplication@MapperScan({"com.tian.mybatis.mapper","com.tian.mybatis.mapper1"})public class Application {}灵活度相当高,这样在实际上项目中,我们就可以指定扫描想要被扫描的包路径。

@Mapper该注解目的就是为了不再写mapper映射文件 (UserMapper.xml)。

使用方式@Mapperpublic interface UserMapper { User selectById(Integer id); }@Insert插入记录的时候主键如何生成?

/*** 插入记录,手动分配主键 */@Insert("INSERT INTO t_user (id, username, passwd) VALUES (#{id}, #{username}, #{passwd})")int addUserAssignKey(User user);在上面的这个例子中,mybatis并不知道到底哪个字段是主键,id虽然是主键字段,但并没有被区别对待。

表自增主键自增主键对应着XML配置中的主键回填,一个简单的例子:/*** 插入记录,数据库生成主键 */@Options(useGeneratedKeys = true, keyProperty = "id")@Insert("INSERT INTO t_user (username, passwd) VALUES (#{username}, #{passwd})")int addUserGeneratedKey(User user);使用Option来对应着XML设置的select标签的属性,userGeneratordKeys表示要使用自增主键,keyProperty用来指定主键字段的字段名。

/** * 插入记录,选择主键 */@Insert("INSERT INTO t_user (username, passwd) VALUES (#{username}, #{passwd})")@SelectKey(statement = "SELECT UNIX_TIMESTAMP(NOW())", keyColumn = "id", keyProperty = "id", resultType = Long.class, before = true)int addUserSelectKey(User user);@Delete删除的时候只要把语句条件神马的写在@Delete注解的value里就好了,返回一个int类型是被成功删除的记录数。

对应xml文件中的标签。

/** * 删除记录 */@Delete("DELETE FROM t_user WHERE id=#{id}")int delete(Long id);@Update修改的时候和删除一样只要把SQL语句写在@Update的value中就好了,返回一个int类型表示被修改的记录行数。

对应xml文件中的标签。

/** * 修改记录 */@Update("UPDATE t_user SET username=#{username}, passwd=#{passwd} WHERE id=#{id}")int update(User user);@Select查询的时候稍稍有些复杂,因为查询会涉及到如何将查出来的字段设置到对象上,对应xml文件中的