网站登录验证码不正确,嘉兴网站免费制作,做网站官网,重庆分类健康管理Mybatis执行自定义SQL并使用PageHelper进行分页
基于Mybatis#xff0c;让程序可以执行动态传入的SQL#xff0c;而不需要在xml或者Select语句中定义。
代码示例
pom.xml 依赖 dependencygroupIdorg.mybatis.spring.boot/groupIdartifactId让程序可以执行动态传入的SQL而不需要在xml或者Select语句中定义。
代码示例
pom.xml 依赖 dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.2.2/version/dependencydependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper-spring-boot-starter/artifactIdversion2.1.0/version/dependencyapplication.properties 配置数据库连接这里使用的数据库是MySQL默认的示例数据库world
#指定Mybatis的Mapper文件
mybatis.mapper-locationsclasspath:mappers/*xml
#指定Mybatis的实体目录
mybatis.type-aliases-packagecom.example.db.mybatis.entity
# 应用服务 WEB 访问端口
server.port28084spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver
spring.datasource.urljdbc:mysql://localhost:3306/world?useUnicodetruecharacterEncodingutf8autoReconnecttrueuseSSLtruezeroDateTimeBehaviorconvertToNullserverTimezoneGMT%2b8
spring.datasource.usernameroot
spring.datasource.passwordroot定义controller用以动态传入需要执行的sql
RestController
Slf4j
public class DBController {Autowiredprivate UserService userService;GetMapping(/query)public Object query() {String sql select * from city;return userService.executeDynamicSql(sql);}
}定义service用于调用mapper方法
Service
public class UserService {Autowiredprivate DynamicSqlMapper dynamicSqlMapper;public ListMapString, Object executeDynamicSql(String sql) {PageHelper.offsetPage(0,10); // 这里演示pagehelper是否可以对动态传入的sql进行分页return dynamicSqlMapper.executeDynamicSql(sql);}
}定义mapper接口用以承载sql语句的执行
Mapper
public interface DynamicSqlMapper {SelectProvider(type MySqlProvider.class, method getDynamicSql)ListMapString, Object executeDynamicSql(String sql);
}
定义sql语句的获取方式
public class MySqlProvider {public String getDynamicSql(String sql) {return sql;}
}执行结果
访问接口http://localhost:28084/query 使用 JTracker 插件可以查看到具体执行的sql语句如下第一次查询count第二次进行分页查询
-- com.example.db.demos.web.mapper.DynamicSqlMapper#executeDynamicSql_COUNT --
-- [21:10:03.894] [2.00ms]
SELECT count(0) FROM city-- com.example.db.demos.web.mapper.DynamicSqlMapper#executeDynamicSql --
-- [21:10:03.917] [1.00ms]
select * from cityLIMIT 10
结论
使用 SelectProvider 注解可以动态执行传入的sql并使用pageHelper进行分页。