mybatis中的参数传递以及使用pagehelper进行分页

mybatis如何从前端传入值 1.在mybatis的映射文件中,进行实体类的传参

<insert id="addUser" parameterType="com.bxq.pojo.User">
        insert into user values(#{
          
   id},#{
          
   username},#{
          
   password})
        /*实体类接参*/
    </insert>

在前端接口处写上实体类的形参

void addUser(User user);

注意此时用的是实体类接参,所以#{}里的是实体类的属性名,必须和实体类的属性名一一对应

2.用注解的方式进行传参 通过导入的mybatis包,里的@Param注解来进行操作

<dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>

首先是dao里向映射文件传入形参的时候:

void update(User user,@Param( "id" ) int id);

然后是映射文件的写法

<update id="update"  >
        update user set  username=haihai where id=#{
          
   id}
        /*用注解的方式进行操作,在接口的形参列表上,给参数的形参前面加上@Param(),括号里写参数名称*/
    </update>

这时候,就把名字为id的形参传入了后端,后端#{}里的内容,也是注解的时候写的名字

3.当只有一个参数的时候 当只有一个参数的时候,可以直接写参数类型,然后进行传值:

<select id="selectById" resultType="com.bxq.pojo.User" parameterType="Integer">
        select * from user where id=#{
          
   id}
    </select>

可以看到,此时我是要查询id为特定值的sql语句,只需要一个int类型的值,那么我的parameterType就为Integer就可以了

分页的另外一种写法 首先需要代入依赖包

<dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.2.0</version>
        </dependency>

在导入依赖包后,在对mybatis的配置文件进行添加导入:

<plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor"/>
    </plugins>

就可以使用该依赖包里的方法,进行页数的封装

PageHelper.startPage(int pageNum, int pageSize);

首先,使用pagehelper里的startPage方法,第一个参数为当前页,第二个参数为页数的大小,来进行页数的封装,然后,吧我们从数据库获取到的实体类list集合封装进pageinfo

List<User> select = userService.select();
  PageInfo<User> userPageInfo = new PageInfo<>( select );

此时的userPageInfo就是一个拥有了页数,集合等属性的对象,吧该对象传到前端就可以实现分页的效果. PageInfo<>里的属性:

private int pageNum;		//当前页数
    private int pageSize;		//页数大小
    private int size;			
    private long startRow;		
    private long endRow;
    private int pages;		
    private int prePage;				//上一页
    private int nextPage;				//下一页
    private boolean isFirstPage;		//是否是第一页
    private boolean isLastPage;			//是否是最后一页
    private boolean hasPreviousPage;	//是否有上一页
    private boolean hasNextPage;	//是否有下一页
    private int navigatePages;
    private int[] navigatepageNums;
    private int navigateFirstPage;
    private int navigateLastPage;
经验分享 程序员 微信小程序 职场和发展