首页 > 其他分享 >Mybatis一些细节

Mybatis一些细节

时间:2022-10-04 19:47:01浏览次数:47  
标签:username List 细节 参数 User Mybatis 一些 password user

一个小技巧:如果在写代码时发现,Maven下的如:clear和plugins爆红可以去它后边的路径去Maven仓库找到删除掉已下载的重新下载,因为可能由于网络原因没下全。

主配置文件(mybatis -config.xml)

/*

登录对应的dao层的方法

需要两个参数:username,password

两种策略:

1、传入User对象,传入一个参数。

场景:User类中的属性非常多,id,username,password,realname,profile,gender.....

User user = new User(null,"admin","123456",null,null,null,null)

2、传入username,password两个参数,规范要求,如果需要传入多个参数,参数个数不要超过3个
*
*

当我们的mapper接口传入多个参数的时候,尽量保证类型的统一。

参数的类型要么是java内置的数据类型,包装器类型或者是String,要么是集合
*

正例:

Integer ,String

String String

String List
*

反例:

User Student

User List

Integer Student
*

1、如果传入的是User对象,在mapper.xml映射文件中,就必须和对象的属性名匹配

2、如果传入的是java内置的数据类型的参数,String,Integer..,如果只传一个参数,直接使用#{参数名},#{param1},#{xxx}

3、如果传入的是java内置的数据类型的参数,String,Integer..,如果传入多个参数,必须使用#{paramN}.#{arg0},不能用#{参数名}
*

原理:

Mybatis在封装参数的时候,封装成了一个Map集合,

如果传入的是User对象,value:{“username”:"admin","password":"123456","id":"1"}

【"username":"admin"】,【"password":"123456"】

如果传入的是一个内置类型的参数,字面量 【"xxxx":"admin"】

如果从传入的是多个参数,【"param1":"admin"】,【"param2":"123456"】

底层封装的map集合,arg0和arg1。起了个默认的别名叫param1,param2

如果传入的是集合,【"param1":"{1,2,3,4,5}"】

需要掌握:mybatis传入参数的策略,封装成了一个map集合
*

使用注解来给参数命名@Param("命名")
*

结论:如果需要传入多个参数,我们希望在mapper.xml中和传入对象一样使用参数的名直接赋值,#{username},使用@Param注解起名

我们还是希望通过传入对象来解决问题!!!!
*

*/

package com.jsoft.dao;

import com.jsoft.entity.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UserMapper {

   
    User selectUserByUsernameAndPassword(@Param("username") String username,@Param("password") String password);

    List<User> selectUserByIds(@Param("ids") List<Integer> ids);

    int updateUserSet(User user);

    List<User> selectUsersTrim(User user);


    List<User> selectUsersChoose(User user);

    List<User> selectUsersIF(User user);

    List<User> findAllUsersByUsername(String username);

    List<User> findAllUsersByPage(Integer pageNum);

    List<User> findAllUsers();

    User selectUserById(Integer id);

    int deleteUserById(Integer id);

    int updateUser(User user);

    int saveUser(User user);

}

    <select id="selectUserById" resultType="com.jsoft.entity.User">
        select id,username,password from user where id = #{id}
    </select>

    <select id="findAllUsers" resultType="com.jsoft.entity.User">
        select id,username,password from user
    </select>

    <select id="findAllUsersByPage" resultType="com.jsoft.entity.User">
        select id,username,password from user limit #{pageNum},8
    </select>

    <select id="findAllUsersByUsername" resultType="com.jsoft.entity.User">
        select id,username,password from user where username like #{asdasdasd}
    </select>
resultType:结果集的自动映射,必须写,对象属性名和查询结果的列名必须对应上
parameterType:参数类型,可以自动解析,可以写不写,如果是我们自定义的引用数据类型,建议写上全类名

标签:username,List,细节,参数,User,Mybatis,一些,password,user
From: https://www.cnblogs.com/369-1/p/16754286.html

相关文章

  • Mybatis学习笔记
    1、简介1.1、什么是MyBatis?MyBatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的......
  • cube.js 一些新配置参数
    cube.js最近的一些变动还是不少的,包含了sql处理以及graphql,目前看团队一直在发力sql以及bi周边的集成能力一些新配置sqlauth主要面向sql处理的(sqlendpoint) module......
  • 整理一些Windows桌面运维常用的命令,并且整合成脚本
    github地址:alittlemc/toy:编写些脚本将运维经常所用到小玩意所集成在一起(github.com)名字叫toy吧,没有啥技术含量,帮不了大忙,但是可以作为在一旁递工具的小弟,还是可减少......
  • redis一些关于SessionCallback和事务要注意的地方
     文章目录1.redisTemplate2.StringRedisTemplate3.测试SessionCallBack4.redis相关的同样适用lambda5.RedisSessionCallback和redis事务的区别......
  • 函数传参的细节
         ......
  • MyBatis的缓存
    1、MyBatis的一级缓存一级缓存是SqlSession级别的,通过同一个SqlSession查询的数据会被缓存,下次查询相同的数据,就会从缓存中直接获取,不会从数据库重新访问。使一级缓存失......
  • 03. MyBatis的核心配置文件
    一、MyBatis环境搭建1.1、数据的准备CREATEDATABASEIFNOTEXISTSdb_test;USEdb_test;CREATETABLEIFNOTEXISTSt_user( idINTPRIMARYKEYAUTO_INCREMENT,......
  • Baklib知识分享|企业文档管理的一些策略
    在信息化的数字时代,任何一个工作流程都涉及到各种文档数据的产生、存储、使用和管理,员工可以在此基础上完成在线编辑任务,跨组织跨地域的文件共享,以及企业知识的积累和沉淀。......
  • <resultMap >继承 解决 Mybatis 统计类查询需求
    在使用Mybatis过程中,有需要通过SQL直接计数或求和的需求,需要自定义<resultMap>,而这些<resultMap>往往会与数据库映射直接生成的<resultMap>有关联,会用到resultMap继承,这......
  • Idea在windows和mac中的一些快捷指令
    从Windows过度到Mac必备快捷键对照表Mac键盘符号说明⌘==Command⇧==Shift⇪==CapsLock⌥==Option⌃==Control↩==Return/Enter⌫==Delete......