• springboot: mybatis的使用


    第一步:引入mybatis依赖

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

    第二步:类目表实体类

    package com.payease.dataobject;
    
    import lombok.Data;
    import org.hibernate.annotations.DynamicUpdate;
    
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    
    /**
     * 类目
     * Created by liuxiaoming
     * 2017-11-09
     */
    @Entity
    @DynamicUpdate   //动态时间修改
    @Data            // get set toString 登方法
    public class ProductCategory {
    
        /** 类目id. */
        @Id
        @GeneratedValue
        private Integer categoryId;
    
        /** 类目名字. */
        private String categoryName;
    
        /** 类目编号. */
        private Integer categoryType;
    
    //    private Date createTime;
    //
    //    private Date updateTime;
    
    
    
    
        public ProductCategory() {
        }
    
        public ProductCategory(String categoryName, Integer categoryType) {
            this.categoryName = categoryName;
            this.categoryType = categoryType;
        }
    }

    第三步:编写相应的mapper文件

    package com.payease.dataobject.mapper;
    
    
    import com.payease.dataobject.ProductCategory;
    import org.apache.ibatis.annotations.*;
    
    import java.util.List;
    import java.util.Map;
    
    /**
     * @Created By liuxiaoming
     * @CreateTime 2017/12/12 下午6:13
     **/
    
    public interface ProductCategoryMapper {
    
        /**
         * 通过参数为map保存
         * @param map
         * @return
         */
        @Insert("insert into product_category(category_name, category_type) values (#{category_name , jdbcType=VARCHAR}, #{category_type, jdbcType=INTEGER})")
        int insertByMap(Map<String, Object> map);
    
        /**
         * 通过参数为对象保存
         * @param productCategory
         * @return
         */
        @Insert("insert into product_category(category_name, category_type) values (#{categoryName , jdbcType=VARCHAR}, #{categoryType, jdbcType=INTEGER})")
        int insertByObject(ProductCategory productCategory);
    
    
        /**
         * 查单一数据
         * 通过categoryType查询product_category表 @Result注解设置返回值
         * @param categoryType
         * @return
         */
        @Select("select * from product_category where category_type = #{categoryType}")
        @Results({
                @Result(column = "category_id", property = "categoryId"),
                @Result(column = "category_name", property = "categoryName"),
                @Result(column = "category_type", property = "categoryType")
        })
        ProductCategory findByCategoryType(Integer categoryType);
    
        /**
         * 查集合
         * 通过categoryName查询product_category表 @Result注解设置返回值
         * @param categoryName
         * @return
         */
        @Select("select * from product_category where category_name = #{categoryName}")
        @Results({
                @Result(column = "category_id", property = "categoryId"),
                @Result(column = "category_name", property = "categoryName"),
                @Result(column = "category_type", property = "categoryType")
        })
        List<ProductCategory> findByCategoryName(String categoryName);
    
        /**
         * 根据某个字段更新
         * 通过查询category_type 来修改 category_name
         * @param categoryName
         * @param categoryType
         * @return
         */
        @Update("update product_category set category_name = #{categoryName} where category_type = #{categoryType}")
        int updateByCategoryType(@Param("categoryName") String categoryName,
                                 @Param("categoryType") Integer categoryType);
    
        /**
         * 根据对象更新
         * 通过查询category_type 来修改 category_name
         * @param productCategory
         * @return
         */
        @Update("update product_category set category_name = #{categorName} where category_type = #{categoryType}")
        int updateByObject(ProductCategory productCategory);
    
        /**
         * 根据某个字段来删除数据
         * 通过category_type 来删除数据
         * @param categoryType
         * @return
         */
        @Delete("delete from product_category where category_type = #{categoryType}")
        int deleteByCategoryType(Integer categoryType);
    
        /**
         * mybatis xml的使用样例
         * 通过categoryType 查询数据
         * @param categoryType
         * @return
         */
        ProductCategory selectByCategoryType(Integer categoryType);
    }

     第四步:测试类的编写

    package com.payease.dataobject.mapper;
    
    import com.payease.dataobject.ProductCategory;
    import org.junit.Assert;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    /**
     * @Created By liuxiaoming
     * @CreateTime 2017/12/12 下午6:19
     **/
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class ProductCategoryMapperTest {
    
        @Autowired
        private ProductCategoryMapper mapper;
    
        @Test
        public void insertByMap() throws Exception {
            Map<String, Object> map = new HashMap<>();
            map.put("category_name","吃鸡专属");
            map.put("category_type",103);
            int result = mapper.insertByMap(map);
            Assert.assertEquals(1,result);
        }
    
        @Test
        public void insertByObject() throws Exception {
            ProductCategory productCategory = new ProductCategory();
            productCategory.setCategoryName("大吉大利");
            productCategory.setCategoryType(102);
            int result = mapper.insertByObject(productCategory);
            Assert.assertEquals(1,result);
        }
    
        @Test
        public void findByCategoryType() throws Exception{
            ProductCategory result = mapper.findByCategoryType(102);
            Assert.assertNotNull(result);
        }
    
        @Test
        public void findByCategoryName() throws Exception{
            List<ProductCategory> result = mapper.findByCategoryName("吃鸡专属");
            Assert.assertNotEquals(0,result.size());
        }
    
        @Test
        public void updateByCategoryType(){
            int result = mapper.updateByCategoryType("绝地求生", 103);
            Assert.assertEquals(1, result);
        }
    
        @Test
        public void updateByObject(){
            ProductCategory productCategory = new ProductCategory();
            productCategory.setCategoryName("今晚吃鸡|大吉大利");
            productCategory.setCategoryType(102);
            int result = mapper.updateByObject(productCategory);
            Assert.assertEquals(1, result);
        }
    
        @Test
        public void deleteByCategoryType(){
            int result = mapper.deleteByCategoryType(102);
            Assert.assertEquals(1, result);
        }
    
        @Test
        public void selectByCategoryType(){
            ProductCategory result = mapper.selectByCategoryType(101);
            Assert.assertNotNull(result);
        }
    
    
    }

    第五步:启动类上加入mapper扫描注解

    package com.payease;
    
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    @MapperScan(basePackages = "com.payease.dataobject.mapper")
    public class SellApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SellApplication.class, args);
        }
    }

    第六步:对于mybatis xml文件的使用需要

    1.在 resource/mapper文件夹下创建相应的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.payease.dataobject.mapper.ProductCategoryMapper" >
      <resultMap id="BaseResultMap" type="com.payease.dataobject.ProductCategory" >
        <id column="category_id" property="categoryId" jdbcType="INTEGER" />
        <result column="category_name" property="categoryName" jdbcType="VARCHAR" />
        <result column="category_type" property="categoryType" jdbcType="INTEGER" />
        <result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
      </resultMap>
    
      <sql id="base_column" >
          category_id,category_name,category_type
      </sql>
      <select id="selectByCategoryType" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
        select <include refid="base_column" />
        from product_category
        where category_type = #{category_type,jdbcType=INTEGER}
      </select>
    
    </mapper>

    2.在application.yml文件夹下配置xml文件的扫描

    注1: mapper文件的使用 封装到dao层

    package com.payease.dataobject.dao;
    
    import com.payease.dataobject.mapper.ProductCategoryMapper;
    import org.springframework.beans.factory.annotation.Autowired;
    
    import java.util.Map;
    
    /**
     * @Created By liuxiaoming
     * @CreateTime 2017/12/13 下午3:23
     **/
    public class ProductCategoryDao {
    
        @Autowired
        ProductCategoryMapper mapper;
    
        public int insertByMap(Map<String, Object> map){
            return mapper.insertByMap(map);
        }
    }

    注2:日志查看mapper文件中的SQL语句

    这是application.yml文件的配置

    spring:
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        username: root
        password: liuxiaoming_123 #1234
        url: jdbc:mysql://rm-uf6qe0894f7hv8977o.mysql.rds.aliyuncs.com/sell?characterEncoding=utf-8&useSSL=false
        #url: jdbc:mysql://127.0.0.1/sell?characterEncoding=utf-8&useSSL=false
      jpa:
        show-sql: true
      jackson:
        default-property-inclusion: non_null
      redis:
        host: 192.168.1.183
        port: 6379
    server:
      context-path: /sell
    #logging:
    #  pattern:
    #    console: "%d - %msg%n"  #日志格式 日期 - 信息 空格
    #  path: /Users/liuxiaoming/Documents/ideawork/sell_log #日志路径 默认名字spring.log
    #  file: /Users/liuxiaoming/Documents/ideawork/sell_log/sell.log #日志文件+路径
    #  level:  #日志级别
    #    com.payease.LoggerTest: debug #日志级别指定某个类 也可以步制定类 直接在level: 后面配置
    
    #日志查看SQL语句
    logging:
      level:
        com.payease.dataobject.mapper: trace
    
    wechat:
      mpAppId: wxd898fcb01713c658
      mpAppSecret: 47ccc303338cee6e62894fxxxxxxxxxxx
      openAppId: wx6ad144e54af67d87
      openAppSecret: 91a2ff6d38a2bbccfb7e9f9079108e2e
      mchId: 1483469312
      mchKey: 06C56A89949D617xxxxxxxxxxx
      keyPath: /var/weixin_cert/h5.p12
      notifyUrl: http://sell.natapp4.cc/sell/pay/notify
      templateId:
        orderStatus: e-Cqq67QxD6YNI41iRiqawEYdFavW_7pc7LyEMb-yeQ
    
    #projectUrl:
    #  wechatMpAuthorize: http://sell.natapp4.cc
    #  wechatOpenAuthorize: http://sell.natapp4.cc
    #  sell: http://sell.natapp4.cc
    projectUrl:
      wechatMpAuthorize: http://127.0.0.1:8080
      wechatOpenAuthorize: http://127.0.0.1:8080
      sell: http://127.0.0.1:8080
  • 相关阅读:
    排列组合之全排列
    Shell脚本学习指南 [ 第一、二章 ] 背景知识、入门
    Scala基础知识[一]
    Hadoop JVM调整解决 MapReduce 作业超时问题
    PL_SQL学习
    Oracle实用操作
    Fernflower 反编译.class文件
    Java命名规范
    Oracle学习笔记1
    JDBC连接MySQL与Oracle
  • 原文地址:https://www.cnblogs.com/liuxiaoming123/p/8033635.html
Copyright © 2020-2023  润新知