欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Mybatis如何使用

本篇內(nèi)容介紹了“Mybatis如何使用”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)建站為您提適合企業(yè)的網(wǎng)站設(shè)計(jì)?讓您的網(wǎng)站在搜索引擎具有高度排名,讓您的網(wǎng)站具備超強(qiáng)的網(wǎng)絡(luò)競爭力!結(jié)合企業(yè)自身,進(jìn)行網(wǎng)站設(shè)計(jì)及把握,最后結(jié)合企業(yè)文化和具體宗旨等,才能創(chuàng)作出一份性化解決方案。從網(wǎng)站策劃到成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè), 我們的網(wǎng)頁設(shè)計(jì)師為您提供的解決方案。

一、背景

MyBatis-Plus 是由一個叫苞米豆的一個組織來開發(fā)的,組織負(fù)責(zé)人叫青苗,目前組織中大概有31人。MyBatis-Plus簡稱 MP是一個 MyBatis 的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生。MyBatis-Plus 可以不需要寫SQL語句就能快速完成單表的操作,MyBatis-Plus的愿景就是成為 MyBatis 最好的搭檔,就像 魂斗羅 中的 1P、2P,基友搭配,效率翻倍。

二、配置

1、pom文件配置

<properties>
    <java.version>1.8</java.version>
    <mybatisplus.version>3.3.1</mybatisplus.version>
 </properties>
<!--mybatis-plus-->
 <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>${mybatisplus.version}</version>
 </dependency>
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator -->
 <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>${mybatisplus.version}</version>
 </dependency>

2、yml文件配置

#mybatis配置
mybatis-plus:
  # 映射文件的位置
  mapper-locations: classpath:mapper/*.xml
  global-config:
    #數(shù)據(jù)庫相關(guān)配置
    db-config:
      #主鍵類型  AUTO:"數(shù)據(jù)庫ID自增", INPUT:"用戶輸入ID", ID_WORKER:"全局唯一ID (數(shù)字類型唯一ID)", UUID:"全局唯一ID UUID";
      id-type: AUTO
      #字段策略 IGNORED:"忽略判斷",NOT_NULL:"非 NULL 判斷"),NOT_EMPTY:"非空判斷"
      field-strategy: NOT_NULL
      #駝峰下劃線轉(zhuǎn)換
      column-underline: true
      logic-delete-value: -1
      logic-not-delete-value: 0
    banner: false
  #原生配置
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: false
    call-setters-on-nulls: true
    jdbc-type-for-null: 'null'
  # 配置包別名
  type-aliases-package:  com.snowriver.it.springdemo.entity

3、SQL準(zhǔn)備

CREATE TABLE `t_snow_operate_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `batch_no` varchar(32) DEFAULT NULL COMMENT '批次號',
  `operator` varchar(255) NOT NULL DEFAULT '' COMMENT '操作人',
  `operate_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作時間',
  `operate_type` tinyint(4) NOT NULL DEFAULT '-1' COMMENT '操作類型 1-導(dǎo)入 2-修改',
  `operate_detail` varchar(255) NOT NULL DEFAULT '' COMMENT '操作明細(xì)(導(dǎo)入-附件名稱  修改-報(bào)單id)',
  `attachment_url` varchar(255) NOT NULL DEFAULT '' COMMENT '附件地址(操作類型為修改 該字段為空)',
  `upload_status` tinyint(4) NOT NULL DEFAULT '-1' COMMENT '上傳狀態(tài) 0-上傳失敗 1-上傳成功 2-處理中',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2245 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='操作日志記錄表';

三、具體代碼(增刪改查)

controller類:

@Slf4j
@RestController
@RequestMapping("/operate")
public class OperateLogController {
 
    @Resource
    private ISnowOperateLogService operateLogService;
 
    @PostMapping("/insert")
    public Result insert(@RequestBody OperateRecordReq request){
        SnowOperateLog operateLog = new SnowOperateLog();
        operateLog.setOperator(request.getOperator());
        operateLog.setOperateTime(request.getOperateTimeStart());
        operateLog.setOperateType(Integer.valueOf(request.getOperateType()));
        operateLogService.save(operateLog);
        return Result.success();
    }
 
    @PostMapping("/insert-batch")
    public Result insertBatch(@RequestBody OperateRecordReq request){
        LocalDateTime dateTime = LocalDateTime.now();
        List<SnowOperateLog> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            SnowOperateLog operateLog = new SnowOperateLog();
            operateLog.setBatchNo(String.valueOf(System.currentTimeMillis()));
            operateLog.setOperator("liudehua" + i);
            operateLog.setOperateType(1);
            operateLog.setOperateTime(dateTime);
            list.add(operateLog);
        }
        operateLogService.saveBatch(list);
        return Result.success();
    }
 
    @GetMapping("/delete")
    public Result<List<SnowOperateLog>> deleteById(@RequestParam(value = "id") String id) {
        operateLogService.deleteById(id);
        return Result.success();
    }
 
    @PostMapping("/update-by-name")
    public Result updateByOperator(@RequestBody OperateRecordReq request){
        operateLogService.updateByOperator(request.getOperator());
        return Result.success();
    }
 
    @PostMapping("/queryList")
    public Result<PageDto<SnowOperateLog>> queryList(@RequestBody OperateRecordReq request) {
        return operateLogService.queryList(request);
    }
 
    @PostMapping("/query-by-name")
    public Result<List<SnowOperateLog>> selectAllByOperator(@RequestBody OperateRecordReq request) {
        List<SnowOperateLog> snowOperateLogs = operateLogService.selectAllByOperator(request.getOperator());
        return Result.success(snowOperateLogs);
    }
}

服務(wù)類:

public interface ISnowOperateLogService extends IService<SnowOperateLog> {
 
    Result<PageDto<SnowOperateLog>> queryList(OperateRecordReq request);
 
    List<SnowOperateLog> selectAllByOperator(String operator);
 
    void updateByOperator(String operator);
 
    void deleteById(String id);
}

實(shí)現(xiàn)類:

@Slf4j
@Service
public class SnowOperateLogServiceImpl extends ServiceImpl<SnowOperateLogMapper, SnowOperateLog> implements
        ISnowOperateLogService {
 
    @Resource
    private SnowOperateLogMapper operateLogMapper;
 
    // 注意:不配置MybatisPlusConfig分頁不生效  TokenKind
    @Override
    public Result<PageDto<SnowOperateLog>> queryList(OperateRecordReq request) {
        LambdaQueryWrapper<SnowOperateLog> wrapper = Wrappers.lambdaQuery(SnowOperateLog.class);
        IPage<SnowOperateLog> page = new Page<>(request.getPageNum(),request.getPageSize());
        wrapper
                .eq(SnowOperateLog::getOperator,request.getOperator())
                .eq(SnowOperateLog::getOperateType,request.getOperateType())
                .ge(SnowOperateLog::getOperateTime,request.getOperateTimeStart())
                .le(SnowOperateLog::getOperateTime,request.getOperateTimeEnd())
                .orderByDesc(SnowOperateLog::getId);
        IPage<SnowOperateLog> logIPage = operateLogMapper.selectPage(page,wrapper);
        PageDto<SnowOperateLog> result = new PageDto<>(logIPage.getTotal(), logIPage.getPages()
                , logIPage.getCurrent(), logIPage.getSize()
                , logIPage.getRecords());
        return Result.success(result);
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public List<SnowOperateLog> selectAllByOperator(String operator){
//        // 自定義方法和SQL實(shí)現(xiàn)功能
//        List<SnowOperateLog> snowOperateLogs = operateLogMapper.selectAllByOperator(operator);
        LambdaQueryWrapper<SnowOperateLog> queryWrapper = Wrappers.lambdaQuery(SnowOperateLog.class)
                .eq(SnowOperateLog::getOperator, operator);
        List<SnowOperateLog> snowOperateLogs = operateLogMapper.selectList(queryWrapper);
        // 批量打印日志
        snowOperateLogs.forEach(System.out::println);
        return snowOperateLogs;
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void updateByOperator(String operator){
        LambdaUpdateWrapper<SnowOperateLog> wrapper = Wrappers.lambdaUpdate(SnowOperateLog.class)
                .eq(SnowOperateLog::getOperator, "張三")
                .set(SnowOperateLog::getOperator, "張三瘋======");
        super.update(wrapper);
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void deleteById(String id){
        LambdaQueryWrapper<SnowOperateLog> wrapper = Wrappers.lambdaQuery(SnowOperateLog.class)
                .eq(SnowOperateLog::getId, id);
        super.remove(wrapper);
    }
}

mapper類

@Mapper
public interface SnowOperateLogMapper extends BaseMapper<SnowOperateLog> {
 
    List<SnowOperateLog> selectAllByOperator(@Param("operator");
 
}

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.snowriver.it.springdemo.mapper.SnowOperateLogMapper">
 
    <!-- 通用查詢映射結(jié)果 -->
    <resultMap id="BaseResultMap" type="com.snowriver.it.springdemo.entity.SnowOperateLog">
        <id column="id" property="id" />
        <result column="batch_no" property="batchNo" />
        <result column="operator" property="operator" />
        <result column="operate_time" property="operateTime" />
        <result column="operate_type" property="operateType" />
        <result column="operate_detail" property="operateDetail" />
        <result column="attachment_url" property="attachmentUrl" />
        <result column="upload_status" property="uploadStatus" />
    </resultMap>
 
    <!-- 通用查詢結(jié)果列 -->
    <sql id="Base_Column_List">
        id, batch_no, operator, operate_time, operate_type, operate_detail, attachment_url, upload_status
    </sql>
 
    <select id="selectAllByOperator" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from t_snow_operate_log
        where operator = #{operator, jdbcType=VARCHAR}
    </select>
 
</mapper>

配置類:MybatisPlusConfig

備注:如果沒有該類,分頁查詢不生效

@Configuration
public class MybatisPlusConfig {
    @Bean
    public PaginationInterceptor paginationInterceptor(){
        return new PaginationInterceptor();
    }
}

實(shí)體類

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_snow_operate_log")
public class SnowOperateLog implements Serializable {
 
    private static final long serialVersionUID = 1L;
 
    /**
     * ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
 
    /**
     * 批次號
     */
    private String batchNo;
 
    /**
     * 操作人
     */
    private String operator;
 
    /**
     * 操作時間
     */
    private LocalDateTime operateTime;
 
    /**
     * 操作類型 1-導(dǎo)入 2-修改
     */
    private Integer operateType;
 
    /**
     * 操作明細(xì)(導(dǎo)入-附件名稱  修改-報(bào)單id)
     */
    private String operateDetail;
 
    /**
     * 附件地址(操作類型為修改 該字段為空)
     */
    private String attachmentUrl;
 
    /**
     * 上傳狀態(tài) 0-上傳失敗 1-上傳成功 2-處理中
     */
    private Integer uploadStatus;
 
 
}

問:SnowOperateLogServiceImpl繼承ServiceImpl就可以獲得service層的方法,為什么還需要實(shí)現(xiàn)ISnowOperateLogService接口?

答:實(shí)現(xiàn) ISnowOperateLogService 接口能夠更方便地對業(yè)務(wù)進(jìn)行擴(kuò)展,一些復(fù)雜場景下的數(shù)據(jù)處理,MyBatisPlus 提供的 Service 方法可能無法處理,此時我們就需要自己編寫代碼,這時候只需在 ISnowOperateLogService 中定義自己的方法,并在 SnowOperateLogServiceImpl 中實(shí)現(xiàn)即可。具體見這行代碼(SnowOperateLogServiceImpl類):

List<SnowOperateLog> snowOperateLogs = operateLogMapper.selectAllByOperator(operator);

四、Wrapper中的QueryWrapper常用ge,gt,lt,le等具體含義
這個自己看源碼就行,具體的類在是com.baomidou.mybatisplus.core.conditions.interfaces.interface

Mybatis如何使用

“Mybatis如何使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

文章題目:Mybatis如何使用
文章源于:http://aaarwkj.com/article14/pdisde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、定制開發(fā)、網(wǎng)站維護(hù)、動態(tài)網(wǎng)站、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
日韩国产传媒在线精品| 亚洲日本欧美一区二区| 91国产自拍在线视频| 精品少妇人妻av蜜桃| 一区二区三区毛片观看| 97视频在线观看观看| 国产黄色一区二区三区,| 亚洲欧美久久一区二区三区| 日本在线免费高清观看| 日韩精品熟女中文字幕| 国产精品熟女一区二区三区| 精品国产91高清在线观看| 国内传媒视频免费观看| av一区二区三区不卡在线看| 夜夜爽精品国产亚洲av成人| 中文字幕丰满人妻不满中出片| 国产成人激情自拍视频在线观看| 国产精品一区二区毛卡片| 精品人妻一区二区av| 日本h电影一区二区三区| 日本欧美高清一区二区| 亚洲av优选在线观看精品| 欧美精品亚洲精品国产| 五月婷婷色丁香综合激情| 一级欧美黄片在线播放| 色久悠悠婷婷综合在线亚洲| 免费亚洲一级黄色录像| 97人妻人人揉人人澡人人学生| 每日更新中文字幕粉嫩av| 日韩区一区二在线视频| 亚洲伦理第一页中文字幕| 黑人精品一区二区三区| 亚洲国产日韩在线精品| 日本黄色小网站在线播放| av在线亚洲网站区一| 丰满的少妇一区二区三区免费观看| av天堂久久这里只有精品美国| 丰满人妻侵犯中文字幕| 久久精品噜噜噜成人av农村| 玩弄丰满熟妇留守妇女| 亚洲av成人在线观看|