首页 > 其他分享 >027.1Mybatis注解开发方式

027.1Mybatis注解开发方式

时间:2022-11-20 14:22:47浏览次数:50  
标签:027.1 mybatis session 开发方式 goods Mybatis import com imooc

1.常用注解

 

 2.使用流程

2.1   com.imooc.mybatis.dao包下创建接口

package com.imooc.mybatis.dao;

import com.imooc.mybatis.dto.GoodsDTO;
import com.imooc.mybatis.entity.Goods;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface GoodsDAO {
    @Select("select * from t_goods where current_price between  #{min} and #{max} order by current_price limit 0,#{limt}")
    public List<Goods> selectByPriceRange(@Param("min") Float min ,@Param("max") Float max ,@Param("limt") Integer limt);

    @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>
    @SelectKey(statement = "select last_insert_id()" , before = false , keyProperty = "goodsId" , resultType = Integer.class)
    public int insert(Goods goods);

    @Select("select * from t_goods")
    //<resultMap>
    @Results({
            //<id>
          @Result(column = "goods_id" ,property = "goodsId" , id = true) ,
            //<result>
            @Result(column = "title" ,property = "title"),
            @Result(column = "current_price" ,property = "currentPrice")
    })
    public List<GoodsDTO> selectAll();
}

2.2 mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <!-- goods_id ==> goodsId 驼峰命名转换 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

    <!--设置默认指向的数据库-->
    <environments default="dev">
        <!--配置环境,不同的环境不同的id名字-->
        <environment id="dev">
            <!-- 采用JDBC方式对数据库事务进行commit/rollback -->
            <transactionManager type="JDBC"></transactionManager>
            <!--采用连接池方式管理数据库连接-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/babytun?useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--<mapper class="com.imooc.mybatis.dao.GoodsDAO"/>-->
        <package name="com.imooc.mybatis.dao"/>
    </mappers>
</configuration>

2.3 测试用例

package com.imooc.mybatis;

import com.imooc.mybatis.dao.GoodsDAO;
import com.imooc.mybatis.dto.GoodsDTO;
import com.imooc.mybatis.entity.Goods;
import com.imooc.mybatis.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

//JUNIT单元测试类
public class MyBatisTestor {

    @Test
    public void testSelectByPriceRange() throws Exception {
        SqlSession session = null;
        try{
            session = MyBatisUtils.openSession();
            GoodsDAO goodsDAO = session.getMapper(GoodsDAO.class);
            List<Goods> list = goodsDAO.selectByPriceRange(100f, 500f, 20);
            System.out.println(list.size());
        }catch (Exception e){
            throw e;
        } finally {
            MyBatisUtils.closeSession(session);

        }
    }

    /**
     * 新增数据
     * @throws Exception
     */
    @Test
    public void testInsert() throws Exception {
        SqlSession session = null;
        try{
            session = MyBatisUtils.openSession();
            Goods goods = new Goods();
            goods.setTitle("测试商品");
            goods.setSubTitle("测试子标题");
            goods.setOriginalCost(200f);
            goods.setCurrentPrice(100f);
            goods.setDiscount(0.5f);
            goods.setIsFreeDelivery(1);
            goods.setCategoryId(43);
            GoodsDAO goodsDAO = session.getMapper(GoodsDAO.class);
            //insert()方法返回值代表本次成功插入的记录总数
            int num = goodsDAO.insert(goods);
            session.commit();//提交事务数据
            System.out.println(goods.getGoodsId());
        }catch (Exception e){
            if(session != null){
                session.rollback();//回滚事务
            }
            throw e;
        }finally {
            MyBatisUtils.closeSession(session);
        }
    }

    @Test
    public void testSelectAll() throws Exception {
        SqlSession session = null;
        try{
            session = MyBatisUtils.openSession();
            GoodsDAO goodsDAO = session.getMapper(GoodsDAO.class);
            List<GoodsDTO> list = goodsDAO.selectAll();
            System.out.println(list.size());
        }catch (Exception e){
            throw e;
        } finally {
            MyBatisUtils.closeSession(session);

        }
    }
}

 

标签:027.1,mybatis,session,开发方式,goods,Mybatis,import,com,imooc
From: https://www.cnblogs.com/LLL0617/p/16908397.html

相关文章

  • 026.MyBatis批处理
    1.goods.xml<!--INSERTINTOtable--><!--VALUES("a","a1","a2"),("b","b1","b2"),(....)--><insertid="batchInsert"parameterType="java.util.List">......
  • 025.MyBatis整合C3P0连接池
    1.pom.xml<dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.4</version>......
  • mybatis-plus与springboot整合
    一、mybatis开发问题需要自己写实体需要自己写xml文件和对应的xml中的sql那是不是存在一种对于通用的功能做很好支持的插件功能:mybatis-plus二、解决的问题:代码生......
  • MyBatis
    MyBatis-第一章 ORM(ObjectRelationalMapping) 设计模式,先有思想,后有实现对象关系映射,是一种数据持久化技术。它在对象模型和关系型数据库之间建立起对应关系,并且......
  • MyBatis2
    MyBatis-第二章Dao接口引入1.修改mapper文件的namespace,对应接口类的全路径2.创建BookDao.java接口类3.接口方法名对应mapper的SQLid4.定义反参和入参(如有)......
  • MyBatis3
    MyBatis-第三章 log4j日志记录可以记录不同级别的日志信息,以备排错和后续信息参考1.配置log4j.properties配置文件,放置在根目录下日志全局设置:log4j.rootLogger=lev......
  • Mybatis 入门实战(2)--简单使用
    本文主要介绍Mybatis的实际使用,相关的环境及软件信息如下:Mybatis3.5.11。1、工程整体结构这里使用Maven来构建样例工程,工程目录结构如下:2、引入依赖<dependency......
  • mybatis学习第六部分:Mybatis注解开发
    6.1  MyBatis的常⽤注解这⼏年来注解开发越来越流⾏,Mybatis也可以使⽤注解开发⽅式,这样我们就可以减少编写Mapper映射⽂件了。我们先围绕⼀些基本的CRUD来学习,再学习......
  • mybatis学习第五部分:Mybatis复杂映射开发
    5.1⼀对⼀查询5.1.1⼀对⼀查询的模型⽤户表和订单表的关系为,⼀个⽤户有多个订单,⼀个订单只从属于⼀个⽤户⼀对⼀查询的需求:查询⼀个订单,与此同时查询出该订单所属的⽤......
  • mybatis学习第四部分: Mybatis配置⽂件深⼊
    4.1  核⼼配置⽂件SqlMapConfig.xml4.1.1 MyBatis核⼼配置⽂件层级关系   4.2  MyBatis常⽤配置解析1)environments标签数据库环境的配置,⽀持多环境配置......