spring 中使用mybatis

一:注解方式
1.依赖

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.1</version>
</dependency>

2.mapper

package com.wxz.sell.domain.mapper;


import com.wxz.sell.domain.ProductCategory;
import org.apache.ibatis.annotations.*;

import java.util.List;
import java.util.Map;

/**先在DAO层使用,再将DAO引入service层
 * @author Wangxingze
 * @date 2019-05-17 00:29
 */
public interface ProductCategoryMapper {

    /** 1.插入
     *前面的字段名和表对应,后面和map的key对应
     * @param map 通过map插入
     * @return插入一条返回1,没有插入返回0
     */
  @Insert("insert into product_category(category_id,category_name,category_type) values(#{category_id,jdbcType=INTEGER},#{categoryName,jdbcType=VARCHAR},#{categoryType,jdbcType=INTEGER})")
    int insertByMap(Map<String,Object> map); //插入参数一个为String一个为int,所以用object,数据从map取

    /**
     * 前面的字段名和表对应,后面和对象字段对应
     * @param productCategory 通过对象插入
     * @return
     */
    @Insert("insert into product_category(category_id,category_name,category_type) values(#{categoryId,jdbcType=INTEGER},#{categoryName,jdbcType=VARCHAR},#{categoryType,jdbcType=INTEGER})")
    int insertByObject(ProductCategory productCategory); //插入参数一个为String一个为int,所以用object,数据从map取


    /**2.查询
     * 注意此处查询结果唯一
     * 通过字段查询
     * @param type
     * @return
     */
    @Select("select * from product_category where category_type=#{type}")
    @Results({//已下三个是查询返回的字段,其他没写的应该为null
            @Result(column = "category_id",property = "categoryId"), //数据库到对象的映射
            @Result(column = "category_type",property = "categoryType"),
            @Result(column = "category_name",property = "categoryName")
    })
    ProductCategory findByCategoryType(int type);

    /**
     * 此处查询结果可能不唯一,所以返回不能是单一对象(在JPA中可以,会返回第一个),
     * @param name
     * @return
     */
    @Select("select * from product_category where category_name=#{name}")
    @Results({//已下三个是查询返回的字段,其他没写的应该为null
            @Result(column = "category_id",property = "categoryId"), //数据库到对象的映射
            @Result(column = "category_type",property = "categoryType"),
            @Result(column = "category_name",property = "categoryName")
    })
    List<ProductCategory> findByCategoryName(String name);

    /**3.更新
     *t通过字段更新
     * @param categoryType  注意多个参数时需要@Param进行映射
     * @param categoryName
     * @return
     */
    @Update("update product_category set category_name=#{name} where category_type=#{type}")
    int upDateByCategoryType(@Param("type") Integer categoryType,
                             @Param("name") String categoryName);

    /**\
     * 通过对象更新,注意字段名对应
     * @param productCategory
     * @return
     */
    @Update("update product_category set category_name=#{categoryName} where category_type=#{categoryType}")
    int upDateByObject(ProductCategory productCategory);

    /**
     * 删除
     * @param type
     * @return
     */
    @Delete("delete from product_category where category_type=#{type}")
    int deleteByCategoryTtype(Integer type);


}//class


3.配置

@MapperScan(basePackages = "com.wxz.sell.domain.mapper")  //mabatis 配置,指定要扫描的包
public class SellApplication {

显示sql语句:

logging:
  level:
   com.wxz.sell.domain.mapper: trace  #使可以看到mybatis的sql语句,注意缩进

二:方式XML
1.mapper中声明方法

//XML方式
    ProductCategory selectByCategoryType(Integer categoryType);

2.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wxz.sell.domain.mapper.ProductCategoryMapper">   <!--xml文件名与该Mapper名相同-->
       <resultMap id="BaseResultMap" type="com.wxz.sell.domain.ProductCategory">
           <id column="category_id" property="categoryId" jdbcType="INTEGER"/> <!--字段映射-->
           <id column="category_name" property="categoryName" jdbcType="VARCHAR"/> <!--字段映射-->
           <id column="category_type" property="categoryType" jdbcType="INTEGER"/>  <!--字段映射-->
       </resultMap>
    <!--id为方法名参数如果是对象就写对象路径,resultMap与上面对应-->
    <select id="selectByCategoryType" resultMap="BaseResultMap" parameterType="java.lang.Integer">
           select category_id,category_name,category_type
           from product_category
           where category_type=#{category_type,jdbcType=INTEGER}
    </select>
</mapper>

3.配置xml路径

#mabatis xml文件路径配置
mybatis:
  mapper-locations: classpath:mapper/*.xml
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值