博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis~使用万能的ResultMap解决属性名和字段名不一致问题,实现分页查询 | 使用注解实现简单的CRUD(注意@Param的使用)
阅读量:4050 次
发布时间:2019-05-25

本文共 1710 字,大约阅读时间需要 5 分钟。

文章目录

使用万能的ResultMap解决属性名和字段名不一致问题

  • 属性名和字段名不一致就是java中实体类的属性名称和数据库中的字段名称不一致
    在这里插入图片描述

在这里插入图片描述

  • 就会造成查到实体类所对应的字段为null
    在这里插入图片描述

解决方法

  1. 在sql语句中进行 字段名改造
    在这里插入图片描述
  2. 使用resultMap将属名与字段名进行匹配
    
  • 这样查出来就布为null了
    在这里插入图片描述

使用ResultMap时间分页查询

  • 分页可以减少数据的处理量,提高性能
select * from user limit {
startIndex},{
pagesize};
  • 注意数据库第一个元素是下标为0, pagesize就是查到的个数比如 limit 0 ,2 查到的是第一数据和第二个数据

实现分页

  • 在映射文件sql语句中使用万能的map传入俩个值, startIndex和pageSize
@org.junit.Test    public void selectUserByLimit() {
Map
map = new HashMap<>(); map.put("startIndex", 0); map.put("pageSize", 2); for (User user : getMapper().selectByLimit(map)) {
System.out.println(user); } close(); }

在这里插入图片描述

RowBounds实现分页

  • 就是全查出来, 在RowBounds中设置startIndex和pageSize的值
  • 作为了解 因为性能不如上面

使用注解实现简单的CRUD

  • 使用注解在接口文件方法字段上就可以实现sql语句的编写, 减少了映射器xml文件的创建, 但是这个也有缺点,就是他只可以实现简单的sql语句, 如果查询的sql语句一旦复杂, 他就如能为力, 就比如上述的属性名和字段名不一致问题他就不能使用万能的map解决
  • 还要注意使用这个的时候在MyBatis配置文件中的绑定映射器要绑定接口文件, 不然就会出错

实现

@Select("select * from user where id=#{uid} and name=#{name}")    //使用常见数据类型, 和String类型必须使用@Param给定别名    User selectOne(@Param("uid") int id, @Param("name") String name);    @Update("update user set pwd=#{newPwd} where id=#{id}")    int update(@Param("id") int id, @Param("newPwd") String newPWd);    @Insert("insert into user values(#{id}, #{name}, #{pwd})")    int insert(User user);    @Delete("delete from user where id=#{id}")    int delete(@Param("id") int id);

注意@Param的使用

  • 基本类型或者String类型, 需要加上, 引用类型不需要
  • 使用@Param设置参数别名, 尤其在多个参数的时候使用所有的参数起那么必须加上这个注解
  • 如果加了这个注解, sql语句就必定一定会找这个别名去获取对应的值
  • #{}使用预编译会避免sql注入问题, 但是${}是直接编译直接拼接, 会有sql注入问题,目前很大程度上都是使用#{}

转载地址:http://ejsci.baihongyu.com/

你可能感兴趣的文章
spring JdbcTemplate 的若干问题
查看>>
Servlet和JSP的线程安全问题
查看>>
GBK编码下jQuery Ajax中文乱码终极暴力解决方案
查看>>
Oracle 物化视图
查看>>
PHP那点小事--三元运算符
查看>>
解决国内NPM安装依赖速度慢问题
查看>>
Brackets安装及常用插件安装
查看>>
Centos 7(Linux)环境下安装PHP(编译添加)相应动态扩展模块so(以openssl.so为例)
查看>>
fastcgi_param 详解
查看>>
Nginx配置文件(nginx.conf)配置详解
查看>>
标记一下
查看>>
IP报文格式学习笔记
查看>>
autohotkey快捷键显示隐藏文件和文件扩展名
查看>>
Linux中的进程
查看>>
学习python(1)——环境与常识
查看>>
学习设计模式(3)——单例模式和类的成员函数中的静态变量的作用域
查看>>
自然计算时间复杂度杂谈
查看>>
当前主要目标和工作
查看>>
使用 Springboot 对 Kettle 进行调度开发
查看>>
一文看清HBase的使用场景
查看>>