浅谈Mybatis之mybaits常用注解

来源:互联网 发布:知柏地黄丸 性早熟 编辑:程序博客网 时间:2024/06/06 03:09

过去使用mybatis都是用xml来配置,在xml里写sql。一大堆xml配置文件,还没开始编程呢,就被xml干闹的头大,所以我是很不喜欢xml的。现在好了,有了简单好用的mybaits注解,我敢打赌,我绝对不会再用一大堆xml配置文件了!

基本注解

@Select 简单查询

 @Select(" Select * from sellers ")    @Results({            @Result(id = true, column = "id", property = "id"),            @Result(column = "name", property = "name"),            @Result(column = "manager_name", property = "managerName"),            @Result(column = "tel", property = "tel"),            @Result(column = "phone", property = "phone"),            @Result(column = "qq_num", property = "qqNum"),            @Result(column = "address", property = "address"),            @Result(column = "remark", property = "remark"),            @Result(column = "sell_arrange", property = "sellArrange")    })    List<Sellers> findAllSellers();

@Insert 简单插入

@Insert(" insert into tb_user(name,sex,age) values(#{name},#{sex},#{age} " )int saveUser(User user);

@Update 简单更新

@Update("update tb_user set name= #{name} ,sex = #{sex},age =#{age} where id = #{id}")void modifyUser(User user);

@Delete 简单删除

@Delete("delete from   sellers   where id =#{id} ")void deleteById(Integer id);

高级注解

@SelectProvider

@SelectProvider(type = EmployeeDynalSqlProvider.class , method = "selectWithParam")List<Employee> selectWithParam(Map<String , Object> param);

@InsertProvider

    @InsertProvider(type = SellerBynalSqlProvider.class,method = "insertSeller")    void save(Sellers seller);

@UpdateProvider

    @UpdateProvider(type = SellerBynalSqlProvider.class, method = "updateSeller")    void update(Sellers seller);

@DeleteProvider

@DeleteProvider(type = EmployeeDynalSqlProvider.class , method = "deleteEmployee")void deleteEmployee(Map<String , Object> param);

@One

    @Select(" select * from stuffs where id = #{id} ")    @Results(            value = {                    @Result(column = "name",property = "name"),                    @Result(column = "little_type",property = "littleTypes",                    //one指示我们,查询出来的结果只有一个。                    one = @One(                           //select = sql语句                  select="com.qingyunqifu.dao.LittleTypeDao.findLittleTypeById",                    //及时加载                      fetchType = FetchType.EAGER))            }    )    Stuffs findStuffById(Integer id);

@Many

    @Select(" select * from sellers where id=#{id} ")    @Results({            @Result(id = true, column = "id", property = "id"),            @Result(column = "name", property = "name"),            @Result(column = "manager_name", property = "managerName"),            @Result(column = "tel", property = "tel"),            @Result(column = "phone", property = "phone"),            @Result(column = "qq_num", property = "qqNum"),            @Result(column = "address", property = "address"),            @Result(column = "remark", property = "remark"),            @Result(column = "sell_arrange", property = "sellArrange"),            @Result(column = "id",property = "stuffsList",            //many指示我们,查询出来的结果有很多个            many = @Many(            //select = sql语句            select = "com.qingyunqifu.dao.StuffDao.findAllStuffsBySellerId",            //懒加载            fetchType = FetchType.LAZY))    })    Sellers findAllStuffsBySellerId(Integer id);

小结:

1、何时用@one何时用@many,取决于持久化对象中的属性是单一的还是List< T >。如果是单一的就用@one,是list就用@many。

2、多对多关系的查询,会用到子查询。

 select * form tb_article where id IN (select article_id form tb_item where order_id = #{id})

3、@Results @Result 用来配置列名和属性
@Param 给参数取名字
@ Options附加配置

原创粉丝点击