一:注解方式
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