0


MyBatis-plus自定义SQL

序号类型地址1MySQLMySQL操作之概念、SQL约束(一)2MySQLMySQL操作之数据定义语言(DDL)(二)3MySQLMySQL操作之数据操作语言(DML)(三)4MySQLMySQL操作之数据查询语言:(DQL)(四-1)(单表操作)5MySQLMySQL操作之数据查询语言:(DQL)(四-2)(多表查询)6MySQLMySQL操作之数据控制语言:(DC)(五)7MySQLMySQL操作之数据库函数8MySQLMySQL管理之数据类型9MySQLMySQL管理之索引10MySQLMySQL管理之事务管理11MySQLMySQL管理之存储过程12MySQLMySQL管理之视图13MySQLMySQL管理之数据备份与还原14MySQLLinux(centos 7.5)服务器安装MySQL15MyBatisMyBatis从入门到多表关联16MyBatisMyBatis常用方法17MyBatisMybatis逆向工程的使用(附文件地址)18MyBatisspring boot连接Mybatis数据库的配置文件(MySql、SQLserver、Oracle)19MyBatis-PlusMybatis-Plus使用案例(包括初始化以及常用插件)20MyBatis-Plusmybatis-plus代码生成器21MyBatis-Plus自定义SQL


文章目录


一、原生MyBatis执行

importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.mybatis.spring.SqlSessionTemplate;importorg.springframework.beans.factory.annotation.Autowired;importjava.sql.SQLException;publicclassTestMySql{@AutowiredprivateSqlSessionTemplate sqlSessionTemplate;//    自定义执行SQLpublicvoidmySql()throwsSQLException{String sql ="select * from User";SqlSession sqlSession =openSession();
        sqlSession.getConnection().prepareStatement(sql);closeSession(sqlSession);}//    开启链接privateSqlSessionopenSession(){SqlSessionFactory sqlSessionFactory = sqlSessionTemplate.getSqlSessionFactory();return sqlSessionFactory.openSession();}//    关闭链接privatevoidcloseSession(SqlSession sqlSession){
        sqlSession.close();}}

二、MyBatis 执行

2.1、调用dao

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

2.2、dao层接口配置

@SqlParser(filter =true)voidexplainQuery(String sql);

2.3、dao中

xml

配置

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

三、MyBatis-plus中Sql注入器

3.1、编写MyBaseMapper(要添加方法)

importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importjava.util.List;publicinterfaceMyBaseMapper<T>extendsBaseMapper<T>{List<T>findAll();}

3.2、编写FindAll(方法具体实现)

importcom.baomidou.mybatisplus.core.enums.SqlMethod;importcom.baomidou.mybatisplus.core.injector.AbstractMethod;importcom.baomidou.mybatisplus.core.metadata.TableInfo;importorg.apache.ibatis.mapping.MappedStatement;importorg.apache.ibatis.mapping.SqlSource;publicclassFindAllextendsAbstractMethod{@OverridepublicMappedStatementinjectMappedStatement(Class<?> mapperClass,Class<?> modelClass,TableInfo tableInfo){String sqlMethod ="findAll";String sql ="select * from "+ tableInfo.getTableName();SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);returnthis.addSelectMappedStatement(mapperClass, sqlMethod, sqlSource, modelClass, tableInfo);}}

3.3、编写MySqlInjector(注册到MyBatis-plus中)

importcom.baomidou.mybatisplus.core.injector.AbstractMethod;importcom.baomidou.mybatisplus.core.injector.DefaultSqlInjector;importjava.util.List;publicclassMySqlInjectorextendsDefaultSqlInjector{@OverridepublicList<AbstractMethod>getMethodList(){List<AbstractMethod> methodList =super.getMethodList();
        methodList.add(newFindAll());// 再扩充自定义的方法
        list.add(newFindAll());return methodList;}}

3.4、编写MySqlInjector(注册到MyBatis-plus中)

importcom.baomidou.mybatisplus.core.injector.AbstractMethod;importcom.baomidou.mybatisplus.core.injector.DefaultSqlInjector;importjava.util.List;publicclassMySqlInjectorextendsDefaultSqlInjector{@OverridepublicList<AbstractMethod>getMethodList(){List<AbstractMethod> methodList =super.getMethodList();
        methodList.add(newFindAll());// 再扩充自定义的方法
        list.add(newFindAll());return methodList;}}

### 2.4、注册到Spring容器

```java
/*** 自定义SQL注入器 */@BeanpublicMySqlInjectormySqlInjector(){returnnewMySqlInjector();}

3.5、测试

@TestpublicvoidtestFindAll(){List<User> users =this.userMapper.findAll();for(User user : users){System.out.println(user);}}
标签: sql java 数据库

本文转载自: https://blog.csdn.net/weixin_44624117/article/details/124936692
版权归原作者 ha_lydms 所有, 如有侵权,请联系我们删除。

“MyBatis-plus自定义SQL”的评论:

还没有评论