Mybatis篇(三)注解方式增删查改

Dao层

持久层/数据库访问层,在Mybatis中称作Mapper,用于持久化数据,就是所谓的数据存储。

我们在持久层使用Mybatis框架开发,开发有两种方式:

  • Mybatis XML方式
  • Mybatis 注解方式

注解方式

注解方式直接在Dao层方法上添加注解即可。

public interface UserDao {

    @Select("select * from user")
    public List<User> findAll();

    @Insert("insert into user (username,email) values (#{userName},#{email})")
    public void save(User user);

    @Select("select * from user where id = #{id}")
    public User findUserById(Integer id);

}

使用注解来映射简单语句会使代码显得更加简洁,然而对于稍微复杂一点的语句,Java 注解就力不从心了,并且会显得更加混乱。 因此,如果你需要完成很复杂的事情,那么最好使用 XML 来映射语句。

@Param

@Param用于给参数命名。

不加的话基本类型默认为入参变量名,复杂类型默认为成员名。

@Update("update user set username=#{u.userName}, email = #{u.email} where id = #{u.id}")
void updateUserById(@Param("u")User user);

@Select("select * from user where id = #{uid}")
User findUserById(@Param("uid")Integer id);
@Insert

表明该方法为新增SQL。

@Insert("insert into user (username,email) values (#{userName},#{email})")
public void saveUser(User user);
@Select

表明该方法为查询SQL。

@Select("select * from user where id = #{id}")
public User findUserById(Integer id);
@Update

表明该方法为更新SQL。

@Update("update user set username=#{userName}, email = #{email} where id = #{id}")
public void updateUserById(User user);
@Delete

表明该方法为删除SQL。

@Delete("delete from user where id=#{id}")
public void deleteUserById(Integer id);
@Results|@Result

Mybatis注解开发之@Results

@Results代表一个结果集的映射关系

@Result代表一个字段的映射关系

@Results(id = "userMap", value = {
        @Result(id=true, column = "id", property = "id"),
        @Result(column = "username", property = "username"),
        @Result(column = "passwd", property = "passwd"),
        @Result(column = "birth_day", property = "birthDay")
})
@Select("SELECT * FROM t_user WHERE id=#{id}")
User loadByIdResultMap(Long id);
@ResultMap

@ResultMap代表引用已有的结果集

@ResultMap("userMap")
@Select("SELECT * FROM t_user WHERE id=#{id}")
User loadByIdResultMapReference(Long id);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值