quarkus集成mybatis,mybatis-plus入门实例 weir 2022-02-11 09:43:01.0 quarkus,mybatis 1442 直接上代码 ```xml 4.0.0 com.weir.quarkus.mybatis mybatis-with-quarkus 1.0.0 3.8.1 true 11 11 UTF-8 UTF-8 quarkus-bom io.quarkus.platform 2.7.1.Final 3.0.0-M5 ${quarkus.platform.group-id} ${quarkus.platform.artifact-id} ${quarkus.platform.version} pom import io.quarkus quarkus-resteasy-jackson io.quarkus quarkus-jdbc-mysql io.quarkiverse.mybatis quarkus-mybatis-plus 1.0.0 io.quarkus quarkus-arc io.quarkus quarkus-resteasy io.quarkus quarkus-smallrye-openapi io.quarkus quarkus-junit5 test io.rest-assured rest-assured test ${quarkus.platform.group-id} quarkus-maven-plugin ${quarkus.platform.version} true build generate-code generate-code-tests maven-compiler-plugin ${compiler-plugin.version} ${maven.compiler.parameters} maven-surefire-plugin ${surefire-plugin.version} org.jboss.logmanager.LogManager ${maven.home} native native maven-failsafe-plugin ${surefire-plugin.version} integration-test verify ${project.build.directory}/${project.build.finalName}-runner org.jboss.logmanager.LogManager ${maven.home} native ``` ```java package com.weir.quarkus.mybatis; import java.util.Date; import com.baomidou.mybatisplus.extension.activerecord.Model; public class Users extends Model { public Integer id; public Date createDate; public String email; public String userName; public String userPwd; public String idStr; public String profileImageUrl; } ``` ```java package com.weir.quarkus.mybatis; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @Mapper public interface UserMapper extends BaseMapper { @Select("SELECT * FROM USERS WHERE id = #{id}") Users getUser(Integer id); @Insert("INSERT INTO USERS (id, name) VALUES (#{id}, #{name})") Integer createUser(@Param("id") Integer id, @Param("name") String name); @Delete("DELETE FROM USERS WHERE id = #{id}") Integer removeUser(Integer id); } ``` ```java package com.weir.quarkus.mybatis; import javax.inject.Inject; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.FormParam; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @Path("/hello") public class ExampleResource { @GET @Produces(MediaType.TEXT_PLAIN) public String hello() { return "Hello RESTEasy"; } @Inject UserMapper userMapper; @Path("/user/{id}") @GET @Produces(MediaType.APPLICATION_JSON) public Users getUser(@PathParam("id") Integer id) { return userMapper.getUser(id); } @Path("/selectById/{id}") @GET @Produces(MediaType.APPLICATION_JSON) public Users get(@PathParam("id") Integer id) { return userMapper.selectById(id); } @Path("/user") @POST @Produces(MediaType.TEXT_PLAIN) @Consumes(MediaType.APPLICATION_FORM_URLENCODED) public Integer createUser(@FormParam("id") Integer id, @FormParam("name") String name) { return userMapper.createUser(id, name); } @Path("/user/{id}") @DELETE @Produces(MediaType.TEXT_PLAIN) public Integer removeUser(@PathParam("id") Integer id) { return userMapper.removeUser(id); } @Path("/user/page/{page}/{pageSize}") @GET public Page list(@PathParam("page") Integer page,@PathParam("pageSize") Integer pageSize) { return userMapper.selectPage(new Page(page, pageSize), null); } } ``` 最关键的开启mybatis-plus的分页拦截器 ```java package com.weir.quarkus.mybatis; import javax.enterprise.context.ApplicationScoped; import javax.enterprise.event.Observes; import javax.inject.Inject; import org.apache.ibatis.session.SqlSessionFactory; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import io.quarkus.runtime.Startup; import io.quarkus.runtime.StartupEvent; @ApplicationScoped @Startup public class BeanConfig { @Inject SqlSessionFactory sqlSessionFactory; void startup(@Observes StartupEvent event) { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); sqlSessionFactory.getConfiguration().addInterceptor(interceptor); } } ``` 好了启动就可以了,推荐注解形式来写sql,当然用mp很多sql就不用写了,分页也有了,也不用再加入第三方的分页插件,所以基本可以使用了。