美文网首页- [ MyBatis ]
十三,MyBatis注解开发

十三,MyBatis注解开发

作者: 好多可乐 | 来源:发表于2021-01-13 00:11 被阅读0次

Mybatis注解:

含义:把原来放在xml中的配置信息和sql语句放在程序中书写,实现功能都是一样的

优点:有更好的开发体验,让程序开发的更快

在这里插入图片描述
使用:

一,查询

  1. 创建注解接口
 public interface GoodsDAO { 
   // 传入的sql和之前在xml文件里配置的一致即可  
     @Select("select * from t_goods where current_price between #{min} and #{max} order by current_price #{limt}")  
   // 因为不能自动判断上面的参数和下面哪个参数相对应,所以需要手动配置    
   public List<Goods> selectByPriceRange(@Param("min") float max, @Param("max") 
   float min,@Param("limt") float limt);}
  1. 在mybatis-config.xml文件新增对应说明
   <!--两种配置方式,二选一即可。-->
    <!--推荐使用第二种,因为随着工程越来越大,配置信息也越来越多,不便维护。
    如果使用包的话,就只用写这一行,mybatis加载时候会对整个包进行扫描,极大简化了配置-->
<mappers>
    <!--<mapper class="com.imooc.mybatis.dao.GoodsDAO"/>-->
    <package name="com.imooc.mybatis.dao"/>
</mappers>
  1. 测试
@Test
public void testSelectByPriceRange() throws Exception {
    SqlSession sqlSession = null;
    try {
        sqlSession = MyBatisUtils.openSession();
        // goodsDAO虽然是接口,但是运行的时候session会根据其配置信息动态生成其实现类
        GoodsDAO goodsDAO = sqlSession.getMapper(GoodsDAO.class);
        // 进行查询
        List<Goods> goods = goodsDAO.selectByPriceRange(20f, 10f, 20);
        System.out.println(goods.size());
    } catch (Exception e) {
        throw e;
    } finally {
        MyBatisUtils.closeSession(sqlSession);
    }
}

二,新增

  1. 创建注解接口
   // 插入
    @Insert("insert into t_goods(title, sub_title, original_cost, current_price, discount, is_free_delivery, category_id)" +
            "values(#{title},#{subTitle},#{originalCost},#{currentPrice},#{discount},#{isFreeDelivery},#{categoryId})")
    @SelectKey(statement = "select last_insert_id()",before = false, resultType = Integer.class,keyProperty = "goodsId")
    public int insert(Goods goods);
  1. 在mybatis-config.xml文件新增对应说明
 <!--两种配置方式,二选一即可。-->
    <!--推荐使用第二种,因为随着工程越来越大,配置信息也越来越多,不便维护。
    如果使用包的话,就只用写这一行,mybatis加载时候会对整个包进行扫描,极大简化了配置-->
<mappers>
    <!--<mapper class="com.imooc.mybatis.dao.GoodsDAO"/>-->
    <package name="com.imooc.mybatis.dao"/>
</mappers>
  1. 测试
@Test
    public void testInsert() throws Exception {
        SqlSession sqlSession = null;
        try {
            sqlSession = MyBatisUtils.openSession();
            Goods goods = new Goods();
            goods.setTitle("t1");
            goods.setSubTitle("t2");
            goods.setCategoryId(12);
            goods.setCurrentPrice(200f);
            goods.setDiscount(20f);
            goods.setIsFreeDelivery(1);
            goods.setOriginalCost(201f);
            GoodsDAO goodsDAO = sqlSession.getMapper(GoodsDAO.class);
            goodsDAO.insert(goods);
            sqlSession.commit();
        } catch (Exception e) {
            if (sqlSession != null) {
                sqlSession.rollback();
            }
            throw e;
        } finally {
            MyBatisUtils.closeSession(sqlSession);
        }
    }

三,实现结果映射

  1. 创建注解接口
    @Select("select * from t_goods")
    // 相当于xml的resultMap
    @Results(
          {
              // 相当于<id> ,里面的id字段表示是否是主键id
              // dto里有什么参数,这里就传入什么
              @Result(column = "goods_id", property = "goodsId", id = true),
              @Result(column = "title", property = "title"),
              @Result(column = "current_price", property = "currentPrice")
          }
    )
    public List<GoodsDTO> selectAll();
}

  1. 在mybatis-config.xml文件新增对应说明
 <!--两种配置方式,二选一即可。-->
    <!--推荐使用第二种,因为随着工程越来越大,配置信息也越来越多,不便维护。
    如果使用包的话,就只用写这一行,mybatis加载时候会对整个包进行扫描,极大简化了配置-->
<mappers>
    <!--<mapper class="com.imooc.mybatis.dao.GoodsDAO"/>-->
    <package name="com.imooc.mybatis.dao"/>
</mappers>
  1. 测试
 @Test
    public void testSelectAll() throws Exception {
        SqlSession sqlSession = null;
        try {
            sqlSession = MyBatisUtils.openSession();
            GoodsDAO goodsDAO = sqlSession.getMapper(GoodsDAO.class);
            List<GoodsDTO> list = goodsDAO.selectAll();
            System.out.println(list.size());
            sqlSession.commit();
        } catch (Exception e) {
            if (sqlSession != null) {
                sqlSession.rollback();
            }
            throw e;
        } finally {
            MyBatisUtils.closeSession(sqlSession);
        }
    }

总结:

  1. xml有更好的维护性,可以在xml种对sql进行灵活修改。利用注解有更好的程序编码体验,直接调整代码即可。
  2. xml项目适合大型团队合作项目,注解更适合小型敏捷开发。

相关文章

  • 十三,MyBatis注解开发

    Mybatis注解: 含义:把原来放在xml中的配置信息和sql语句放在程序中书写,实现功能都是一样的 优点:有更...

  • Mybatis高级阶段

    Mybatis基于注解开发 这几年来注解开发越来越流行,Mybatis也可以使用注解开发方式,这样我们就可以减少编...

  • 4.Mybatis-04 Mybatis 延迟加载策略,缓存及

    主要内容 Mybatis 延迟加载策略 Mybatis 缓存 Mybatis 注解开发 Mybatis 延迟加载策...

  • spring boot教程

    描述 集成mybatis 首先要引入mybatis依赖 注解式开发 编写dao层,在接口中使用注解开发。@Mapp...

  • 5/13day53_注解&分页综合练习

    回顾 MyBatis注解&综合练习 今日目标 一 MyBatis注解 ​ 这几年来注解开发越来越流行,Myba...

  • Mybatis基础 -- 注解开发

    一、Mybatis 常用注解 这几年来注解开发越来越流行,Mybatis也可以使用注解开发方式,这样我们就可以减少...

  • Mybatis的注解开发

    2.1 MyBatis的常用注解 这几年来注解开发越来越流行,Mybatis也可以使用注解开发方式,这样我们就可以...

  • SSM注解式开发

    Struts2 + Spring + Mybatis 注解式开发

  • MyBatis的注解开发

    MyBatis的注解开发MyBatis的映射配置除了使用xml配置以外,还支持注解配置sql语句问题: 为什么有了...

  • MyBatis--注解式开发

    MyBatis--注解式开发 MyBatis的注解,主要是用于替换映射文件。而映射文件中无非存放着增删改查的sql...

网友评论

    本文标题:十三,MyBatis注解开发

    本文链接:https://www.haomeiwen.com/subject/tcyyaktx.html