文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Springboot整合MyBatis参数传值方式

2024-12-03 04:15

关注

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

环境配置

依赖

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

 应用配置

  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 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 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 queryUsers3(Map 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 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 queryUsers5(Collection params) ; 

xml

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

Mapper

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

 XML

  1. "com.pack.mapper.UsersMapper"
  2.     "com.pack.domain.Users" id="usersMapper"
  3.         column="id" property="id"/> 
  4.         column="username" property="username"/> 
  5.         column="real_name" property="realName"/> 
  6.         column="create_time" property="createTime"/> 
  7.         column="status" property="status"/> 
  8.         column="authority" property="authority"/> 
  9.         column="id_no" property="idNo"/> 
  10.      
  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.          "params" open="(" separator="," close=")" item="id"
  26.             #{id} 
  27.          
  28.     select
  29.  

 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 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 ids) { 
  37.         return R.success(Pager.query(new UsersDTO(), () -> { 
  38.             return usersMapper.queryUsers5(ids) ; 
  39.         })) ; 
  40.     } 

完毕!!!

 

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯