Springboot整合MyBatis参数传值方式

开发 前端
本篇带给大家Springboot整合MyBatis参数传值方式,希望对你有所帮助!

[[400387]]

环境:springboot2.3.9.RELEASE + MyBatis + MySQL

环境配置

依赖

  1. <dependency> 
  2.   <groupId>org.springframework.boot</groupId> 
  3.   <artifactId>spring-boot-starter-data-jpa</artifactId> 
  4. </dependency> 
  5.  
  6. <dependency> 
  7.   <groupId>mysql</groupId> 
  8.   <artifactId>mysql-connector-java</artifactId> 
  9.   <scope>runtime</scope> 
  10. </dependency> 
  11. <dependency> 
  12.   <groupId>org.mybatis.spring.boot</groupId> 
  13.   <artifactId>mybatis-spring-boot-starter</artifactId> 
  14.   <version>2.1.4</version> 
  15. </dependency> 
  16. <dependency> 
  17.   <groupId>com.github.pagehelper</groupId> 
  18.   <artifactId>pagehelper-spring-boot-starter</artifactId> 
  19.   <version>1.3.0</version> 
  20. </dependency> 

 应用配置

  1. spring: 
  2.   datasource: 
  3.     driverClassName: com.mysql.cj.jdbc.Driver 
  4.     url: jdbc:mysql://localhost:3306/testjpa?serverTimezone=GMT%2B8 
  5.     username: root 
  6.     password: 123123 
  7.     type: com.zaxxer.hikari.HikariDataSource 
  8.     hikari: 
  9.       minimumIdle: 10 
  10.       maximumPoolSize: 200 
  11.       autoCommit: true 
  12.       idleTimeout: 30000 
  13.       poolName: MasterDatabookHikariCP 
  14.       maxLifetime: 1800000 
  15.       connectionTimeout: 30000 
  16.       connectionTestQuery: SELECT 1 
  17. --- 
  18. spring: 
  19.   jpa: 
  20.     generateDdl: false 
  21.     hibernate: 
  22.       ddlAuto: update 
  23.     openInView: true 
  24.     show-sql: true 
  25. --- 
  26. pagehelper: 
  27.   helperDialect: mysql 
  28.   reasonable: true 
  29.   pageSizeZero: true 
  30.   offsetAsPageNum: true 
  31.   rowBoundsWithCount: true 
  32. --- 
  33. mybatis: 
  34.   type-aliases-package: com.pack.domain 
  35.   mapper-locations: 
  36.   - classpath:/mappers/*.xml 

 主要是数据源 + MyBatis starter + pagehelper相关配置。

Mapper接口参数传值方式

方式1:

  1. List<Users> queryUsers1(String idNo, String username) ; 

xml

  1. <select id="queryUsers1" resultMap="usersMapper"
  2.   SELECT * FROM bc_users T where T.ID_NO = #{param1} AND T.USERNAME LIKE CONCAT(CONCAT('%',#{param2}), '%')  
  3. </select

根据方法的参数顺序param*。

或者:

  1. <select id="queryUsers1" resultMap="usersMapper"
  2.   SELECT * FROM bc_users T where T.ID_NO = #{idNo} AND T.USERNAME LIKE CONCAT(CONCAT('%',#{username}), '%')  
  3. </select

直接写参数名称。

方式2:

通过@Param注解指明参数的名称

  1. List<Users> queryUsers2(@Param("no")String idNo,  @Param("un")String username) ; 

xml

  1. <select id="queryUsers2" resultMap="usersMapper"
  2.   SELECT * FROM bc_users T where T.ID_NO = #{noAND T.USERNAME LIKE CONCAT(CONCAT('%',#{un}), '%')  
  3. </select

方式3:

通过Map传参

  1. List<Users> queryUsers3(Map<String, Object> params) ; 

xml

  1. <select id="queryUsers3" resultMap="usersMapper" parameterType="hashmap"
  2.   SELECT * FROM bc_users T where T.ID_NO = #{id_no} AND T.USERNAME LIKE CONCAT(CONCAT('%',#{user_name}), '%')  
  3. </select

这里的#{xxx} 就是存入Map中的Key。

方式4:

通过对象传参

  1. List<Users> queryUsers4(UsersDTO params) ; 

UsersDTO.java

  1. public class UsersDTO extends ParamsDTO { 
  2.      
  3.     private String idNo ; 
  4.     private String username ; 
  5.     public String getIdNo() { 
  6.         return idNo; 
  7.     } 
  8.     public void setIdNo(String idNo) { 
  9.         this.idNo = idNo; 
  10.     } 
  11.     public String getUsername() { 
  12.         return username; 
  13.     } 
  14.     public void setUsername(String username) { 
  15.         this.username = username; 
  16.     } 
  17.      

 xml

  1. <select id="queryUsers4" resultMap="usersMapper" parameterType="com.pack.utils.UsersDTO"
  2.   SELECT * FROM bc_users T where T.ID_NO = #{idNo} AND T.USERNAME LIKE CONCAT(CONCAT('%',#{username}), '%')  
  3. </select

这里的#{xxx} 对象中必须有该属性对应的getter方法。

方式5:

List集合参数

  1. List<Users> queryUsers5(Collection<String> params) ; 

xml

  1. <select id="queryUsers5" resultMap="usersMapper" parameterType="com.pack.utils.UsersDTO"
  2.   SELECT * FROM bc_users T where T.id in  
  3.     <foreach collection="params" open="(" separator="," close=")" item="id"
  4.       #{id} 
  5.     </foreach> 
  6. </select

Mapper

  1. @Mapper 
  2. public interface UsersMapper { 
  3.      
  4.     List<Users> queryUsers1(String idNo, String username) ; 
  5.      
  6.     List<Users> queryUsers2(@Param("no")String idNo,  @Param("un")String username) ; 
  7.      
  8.     List<Users> queryUsers3(Map<String, Object> params) ; 
  9.      
  10.     List<Users> queryUsers4(UsersDTO params) ; 
  11.      
  12.     List<Users> queryUsers5(Collection<String> params) ; 
  13.      

 XML

  1. <mapper namespace="com.pack.mapper.UsersMapper"
  2.     <resultMap type="com.pack.domain.Users" id="usersMapper"
  3.         <id column="id" property="id"/> 
  4.         <id column="username" property="username"/> 
  5.         <id column="real_name" property="realName"/> 
  6.         <id column="create_time" property="createTime"/> 
  7.         <id column="status" property="status"/> 
  8.         <id column="authority" property="authority"/> 
  9.         <id column="id_no" property="idNo"/> 
  10.     </resultMap> 
  11.     <select id="queryUsers1" resultMap="usersMapper"
  12.         SELECT * FROM bc_users T where T.ID_NO = #{idNo} AND T.USERNAME LIKE CONCAT(CONCAT('%',#{username}), '%')  
  13.     </select
  14.     <select id="queryUsers2" resultMap="usersMapper"
  15.         SELECT * FROM bc_users T where T.ID_NO = #{noAND T.USERNAME LIKE CONCAT(CONCAT('%',#{un}), '%')  
  16.     </select
  17.     <select id="queryUsers3" resultMap="usersMapper" parameterType="hashmap"
  18.         SELECT * FROM bc_users T where T.ID_NO = #{id_no} AND T.USERNAME LIKE CONCAT(CONCAT('%',#{user_name}), '%')  
  19.     </select
  20.     <select id="queryUsers4" resultMap="usersMapper" parameterType="com.pack.utils.UsersDTO"
  21.         SELECT * FROM bc_users T where T.ID_NO = #{idNo} AND T.USERNAME LIKE CONCAT(CONCAT('%',#{username}), '%')  
  22.     </select
  23.     <select id="queryUsers5" resultMap="usersMapper" parameterType="com.pack.utils.UsersDTO"
  24.         SELECT * FROM bc_users T where T.id in  
  25.          <foreach collection="params" open="(" separator="," close=")" item="id"
  26.             #{id} 
  27.         </foreach> 
  28.     </select
  29. </mapper> 

 Controller

  1. @Resource 
  2.     private UsersMapper usersMapper ; 
  3.      
  4.     @GetMapping("/q1"
  5.     public Object q1(UsersDTO params) { 
  6.         return R.success(Pager.query(params, () -> { 
  7.             return usersMapper.queryUsers1(params.getIdNo(), params.getUsername()) ; 
  8.         })) ; 
  9.     } 
  10.      
  11.     @GetMapping("/q2"
  12.     public Object q2(UsersDTO params) { 
  13.         return R.success(Pager.query(params, () -> { 
  14.             return usersMapper.queryUsers2(params.getIdNo(), params.getUsername()) ; 
  15.         })) ; 
  16.     } 
  17.      
  18.     @GetMapping("/q3"
  19.     public Object q3(UsersDTO params) { 
  20.         return R.success(Pager.query(params, () -> { 
  21.             Map<String, Object> ps = new HashMap<>() ; 
  22.             ps.put("id_no", params.getIdNo()) ; 
  23.             ps.put("user_name", params.getUsername()) ; 
  24.             return usersMapper.queryUsers3(ps) ; 
  25.         })) ; 
  26.     } 
  27.      
  28.     @GetMapping("/q4"
  29.     public Object q4(UsersDTO params) { 
  30.         return R.success(Pager.query(params, () -> { 
  31.             return usersMapper.queryUsers4(params) ; 
  32.         })) ; 
  33.     } 
  34.      
  35.     @GetMapping("/q5"
  36.     public Object q5(@RequestBody List<String> ids) { 
  37.         return R.success(Pager.query(new UsersDTO(), () -> { 
  38.             return usersMapper.queryUsers5(ids) ; 
  39.         })) ; 
  40.     } 

完毕!!!

 

责任编辑:姜华 来源: 今日头条
相关推荐

2021-06-07 08:39:58

SpringBootMyBatisMapper

2023-03-29 23:23:00

MyBatis参数框架

2023-06-07 08:08:37

MybatisSpringBoot

2018-04-28 15:51:33

Mybatis方式传递

2021-11-10 11:37:48

Spring整合 Mybatis

2020-11-09 10:16:41

Mybatis

2023-08-09 08:01:00

WebSockett服务器web

2022-11-15 08:10:23

SpringMyBatis底层

2011-04-11 10:06:16

传值传引用

2022-12-29 08:49:40

SpringBootExcel

2021-04-07 08:43:09

SpringBootRocketMQ开发技术

2009-07-06 10:00:31

JSP页面传值

2023-11-29 09:47:11

C++对象

2021-06-05 07:34:00

SpringBootMybatis用法

2012-06-13 13:46:31

Windows Pho诺基亚地图

2011-09-28 10:03:23

IntelMeeGo

2009-05-06 16:10:17

Java传值引用

2020-04-23 15:08:41

SpringBootMyCatJava

2009-12-14 14:50:46

Ruby传参数

2010-01-25 15:15:46

Android传值
点赞
收藏

51CTO技术栈公众号