序号 | 类型 | 地址 |
---|---|---|
1 | MySQL | MySQL操作之概念、SQL约束(一) |
2 | MySQL | MySQL操作之数据定义语言(DDL)(二) |
3 | MySQL | MySQL操作之数据操作语言(DML)(三) |
4 | MySQL | MySQL操作之数据查询语言:(DQL)(四-1)(单表操作) |
5 | MySQL | MySQL操作之数据查询语言:(DQL)(四-2)(多表查询) |
6 | MySQL | MySQL操作之数据控制语言:(DC)(五) |
7 | MySQL | MySQL操作之数据库函数 |
8 | MySQL | MySQL管理之数据类型 |
9 | MySQL | MySQL管理之索引 |
10 | MySQL | MySQL管理之事务管理 |
11 | MySQL | MySQL管理之存储过程 |
12 | MySQL | MySQL管理之视图 |
13 | MySQL | MySQL管理之数据备份与还原 |
14 | MySQL | Linux(centos 7.5)服务器安装MySQL |
15 | MyBatis | MyBatis从入门到多表关联 |
16 | MyBatis | MyBatis常用方法 |
17 | MyBatis | Mybatis逆向工程的使用(附文件地址) |
18 | MyBatis | spring boot连接Mybatis数据库的配置文件(MySql、SQLserver、Oracle) |
19 | MyBatis-Plus | Mybatis-Plus使用案例(包括初始化以及常用插件) |
20 | MyBatis-Plus | Mybatis-Plus(Service CRUD 接口) |
21 | MyBatis-Plus | Mybatis-plus 4种条件构造器方式 |
22 | MyBatis-Plus | Mybatis-Plus 执行自定义SQL |
23 | MyBatis-Plus | MyBatis-plus配置自定义SQL(执行用户传入SQL) |
24 | MyBatis-Plus | Mybatis-Plus(连接Hive) |
25 | MyBatis-Plus | Mybatis-Plus 代码生成器 |
一、原生MyBatis执行
代码语言:javascript复制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;
// 自定义执行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();
}
// 关闭链接
private void closeSession(SqlSession sqlSession) {
sqlSession.close();
}
}
二、MyBatis 执行
2.1、调用dao
代码语言:javascript复制String sql = "Select * From User";
sqlMapper.explainQuery(sql);
2.2、dao层接口配置
代码语言:javascript复制@SqlParser(filter = true)
void explainQuery(String sql);
2.3、dao中xml
配置
代码语言:javascript复制<update id="explainQuery">
${templateName,jdbcType=VARCHAR}
</update>
三、MyBatis-plus中Sql注入器
3.1、编写MyBaseMapper(要添加方法)
代码语言:javascript复制import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface MyBaseMapper<T> extends BaseMapper<T> {
List<T> findAll();
}
3.2、编写FindAll(方法具体实现)
代码语言:javascript复制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中)
代码语言:javascript复制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()); // 再扩充自定义的方法
list.add(new FindAll());
return methodList;
}
}
3.4、编写MySqlInjector(注册到MyBatis-plus中)
代码语言:javascript复制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()); // 再扩充自定义的方法
list.add(new FindAll());
return methodList;
}
}
### 2.4、注册到Spring容器
```java
/*** 自定义SQL注入器 */
@Bean
public MySqlInjector mySqlInjector() {
return new MySqlInjector();
}
3.5、测试
代码语言:javascript复制@Test
public void testFindAll() {
List<User> users = this.userMapper.findAll();
for (User user : users) {
System.out.println(user);
}
}