亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MyBatis-plus如何執(zhí)行自定義SQL

 更新時間:2024年02月19日 16:47:33   作者:ha_lydms  
這篇文章主要介紹了MyBatis-plus如何執(zhí)行自定義SQL問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一、原生MyBatis執(zhí)行

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;

import java.sql.SQLException;

public class TestMySql {
    @Autowired
    private SqlSessionTemplate sqlSessionTemplate;

    //    自定義執(zhí)行SQL
    public void mySql() throws SQLException {
        String sql = "select * from User";
        SqlSession sqlSession = openSession();
        sqlSession.getConnection().prepareStatement(sql);
        closeSession(sqlSession);
    }

    //    開啟鏈接
    private SqlSession openSession() {
        SqlSessionFactory sqlSessionFactory = sqlSessionTemplate.getSqlSessionFactory();
        return sqlSessionFactory.openSession();
    }

    //    關(guān)閉鏈接
    private void closeSession(SqlSession sqlSession) {
        sqlSession.close();
    }
}

二、MyBatis 執(zhí)行

2.1、調(diào)用dao

String sql = "Select * From User";
sqlMapper.explainQuery(sql);

2.2、dao層接口配置

@SqlParser(filter = true)
void explainQuery(String sql);

2.3、dao中xml配置

<update id="explainQuery">
  ${templateName,jdbcType=VARCHAR}
</update>

三、MyBatis-plus中Sql注入器

3.1、編寫MyBaseMapper(要添加方法)

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface MyBaseMapper<T> extends BaseMapper<T> {
    List<T> findAll();
}

3.2、編寫FindAll(方法具體實(shí)現(xiàn))

import com.baomidou.mybatisplus.core.enums.SqlMethod;
import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.SqlSource;

public class FindAll extends AbstractMethod {
    @Override
    public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
        String sqlMethod = "findAll";
        String sql = "select * from " + tableInfo.getTableName();
        SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
        return this.addSelectMappedStatement(mapperClass, sqlMethod, sqlSource, modelClass, tableInfo);
    }
}

3.3、編寫MySqlInjector(注冊到MyBatis-plus中)

import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;

import java.util.List;

public class MySqlInjector extends DefaultSqlInjector {
    @Override
    public List<AbstractMethod> getMethodList() {
        List<AbstractMethod> methodList = super.getMethodList();
        methodList.add(new FindAll()); // 再擴(kuò)充自定義的方法
        list.add(new FindAll());
        return methodList;
    }
}

3.4、編寫MySqlInjector(注冊到MyBatis-plus中)

import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;

import java.util.List;

public class MySqlInjector extends DefaultSqlInjector {
    @Override
    public List<AbstractMethod> getMethodList() {
        List<AbstractMethod> methodList = super.getMethodList();
        methodList.add(new FindAll()); // 再擴(kuò)充自定義的方法
        list.add(new FindAll());
        return methodList;
    }
}

### 2.4、注冊到Spring容器

```java
/*** 自定義SQL注入器 */
@Bean
public MySqlInjector mySqlInjector() {
    return new MySqlInjector();
}

3.5、測試

@Test
public void testFindAll() {
    List<User> users = this.userMapper.findAll();
    for (User user : users) {
        System.out.println(user);
    }
}

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 圖文淺析Java序列化和反序列化

    圖文淺析Java序列化和反序列化

    序列化(Serialization)是將對象的狀態(tài)信息轉(zhuǎn)化為可以存儲或者傳輸?shù)男问降倪^程,下面這篇文章主要給大家介紹了關(guān)于Java序列化和反序列化的相關(guān)資料,需要的朋友可以參考下
    2021-05-05
  • Idea和Docker如何集成

    Idea和Docker如何集成

    今天就介紹下idea和Docker如何集成,要集成之前,需要我們本機(jī)能夠訪問docker服務(wù),也就是我們的docker服務(wù)需要開啟遠(yuǎn)程模式,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • java調(diào)用js文件的兩種常用方法示例(支持V8引擎)

    java調(diào)用js文件的兩種常用方法示例(支持V8引擎)

    在Java中調(diào)用JavaScript的方法通常涉及到使用Java的腳本引擎,下面這篇文章主要給大家介紹了關(guān)于java調(diào)用js文件的兩種常用方法(支持V8引擎)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • 深入淺析drools中Fact的equality?modes

    深入淺析drools中Fact的equality?modes

    這篇文章主要介紹了drools中Fact的equality?modes的相關(guān)知識,本文通過圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • Java中處理郵件附件的方法(本地文件和在線URL)

    Java中處理郵件附件的方法(本地文件和在線URL)

    這篇文章主要介紹了在Java中處理郵件附件的方法,針對本地文件和在線URL兩種附件來源,提供了兩種解決方案,并提供了下載文件和發(fā)送郵件的代碼示例,需要的朋友可以參考下
    2025-03-03
  • 在SpringBoot中實(shí)現(xiàn)一個訂單號生成系統(tǒng)的示例代碼

    在SpringBoot中實(shí)現(xiàn)一個訂單號生成系統(tǒng)的示例代碼

    在Spring Boot中設(shè)計一個訂單號生成系統(tǒng),主要考慮到生成的訂單號需要滿足的幾個要求:唯一性、可擴(kuò)展性、以及可能的業(yè)務(wù)相關(guān)性,本文給大家介紹了幾種常見的解決方案及相應(yīng)的示例代碼,需要的朋友可以參考下
    2024-02-02
  • 使用JSONObject.toJSONString 過濾掉值為空的key

    使用JSONObject.toJSONString 過濾掉值為空的key

    這篇文章主要介紹了使用JSONObject.toJSONString 過濾掉值為空的key,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java對象深復(fù)制與淺復(fù)制實(shí)例詳解

    Java對象深復(fù)制與淺復(fù)制實(shí)例詳解

    這篇文章主要介紹了 Java對象深復(fù)制與淺復(fù)制實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 通過圖例了解PowerDesigner使用方法

    通過圖例了解PowerDesigner使用方法

    這篇文章主要介紹了通過圖例了解PowerDesigner使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • Java三級菜單工具類實(shí)現(xiàn)方式

    Java三級菜單工具類實(shí)現(xiàn)方式

    這篇文章通過實(shí)例代碼給大家介紹Java三級菜單工具類實(shí)現(xiàn)方式,常用的三個字段,子級id、父級id、其次是數(shù)組children,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2024-05-05

最新評論