mybatis总结(三)

分页
为什么分页?
减少数据的处理量
使用MyBatis实现分页,核心SQL

1、接口
List  getUserByLimit(Map<String,Integer> map);

2、Mapper.xml
在这里插入图片描述

3、测试
mybatis总结(三)_第1张图片
RowBounds分页
代码层面实现分页
1、接口
List getUserByRowBounds();
2、mapper.xml

 <select id="getUserByRowBounds" resultType="hello" >
        select * from mybatis.user
    select>

3、 测试

 public void getUserByRowBounds(){
     
        SqlSession sqlSession = MybatisUtil.getSession();
        //RowBounds实现
        RowBounds rowBounds = new RowBounds(1, 2);
        //通过Java代码层面实现分页
        List<User> userList = sqlSession.selectList("com.kuang.dao.UserMapper.getUserByRowBounds", null, rowBounds);
        for (User user : userList) {
     
            System.out.println(user);
        }
        sqlSession.close();
    }

PageHelper使用教程(了解即可,以后如果使用,再说)
https://www.jianshu.com/p/a5df4a8cebd2

使用注解开发(拿一个举例子)
1、编写静态方法以及添加sql语句

@Select("select *from mybatis.user")
    List<User> getUsers();

2、在核心配置文件mybatis-config.xml添加mapper(顺便加一句,在配置文件中添加标签是需要注意顺序的,不然会报错)

<mappers>
        <mapper class="com.kuang.dao.UserMapper"/>
    mappers>

3、测试执行

@Test
    public void test() {
     
        SqlSession sqlSession = MybatisUtil.getSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> user = mapper.getUsers();
        for (User user1 : user) {
     
            System.out.println(user1);
        }
        sqlSession.close();
    }

本质:反射机制
底层:动态代理
mybatis总结(三)_第2张图片
1、事务

   事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。

注解开发的CRUD

@param(""):基本数据类型需要加,引用类型不需要加。如果只有一个基本类型的话,可以忽略,但是建议大家都加上
我们在SQL中引用的就是我们这里的@Param()中设定的属性名

#{}
  是预编译的方式,相当于jdbc的占位符PrepareStatement,

一个#{}就是一个占位符

mybatis在为#{}设置值时,会加引号

模 糊 查 询 时 不 用 ( 早 期 使 用 )     直 接 拼 接 的 方 式 , 不 对 数 值 做 预 编 译     m y b a t i s 在 为 {} 模糊查询时不用(早期使用)   直接拼接的方式,不对数值做预编译   mybatis在为 使    mybatis{}设置值时,不加引号
  存在sql注入的现象
  就像是preparement和prepareStatement的区别

你可能感兴趣的:(mybatis)