mybatis知识汇总

本篇讲述的内容有:

  • mybatis输入输出类型
  • bean属性和表字段不一致问题
  • mybatis参数传递问题
  • mybatis常用的标签
  • mybatis返回主键id
  • mybatis逆向工程

输入/输出类型(传入参数和返回值问题)


1、输入类型 parameterType

表示mapper接口中的方法入参类型为int(等同于java.lang.Integer),当方法入参包含多种类型时,可以使用Map映射(个人建议,也可以参照下面的参数传递问题解决方案),例如存在这样的SQL
select  id,user_name,age,address,classes,status,is_vip,register_time  from  vip_user  where  name like '%'+?+'%'  and is_vip=?  and  register_time>?

name是String类型,is_vip是int类型,register_time是String类型,此时就需要使用parameterType="java.util.Map"来映射

其中的#{ }里面值的name、isVIP、registerTime可以自定义,但必须和Map中的key一致,如果是单个入参,则可通过 @Param("name")注解 来约定。
对应的逻辑中(比如说service中)设值/调用
……
Map map = new HashMap<>();
map.put("name",userVip.getName());
map.put("isVip",userVip.getIsVip);
map.put("registerTime",userVip.getRegisterTIme());
List userVipList = userVipMapper.getUserVipInfo(map);

java.lang.Integer就等用于int,mybatis会自动匹配,下同。

2、输出类型 resultType和resultMap
resultType可接受的值为String、int、bean、Map等,resultMap主要是用于高级映射,例如联合查询或者需要使用自定义的结果集时,bean的字段属性和表的列名称不一致时,例如上述sql中使用到的 resultMap="BaseResultMap" 
    
    
     
     
     ………

bean字段和表字段不一致问题

解决方案:

1、查询时设置别名

select id,user_name as username,age,address,classes,status,is_vip as isvip,register_time as registertime from vip_user where ……

2、自定义结果集来映射字段和属性

    
    
     
     
     ………

参数传递问题

方式一:#{N},N表示第几个,从0开始 


方式二: 固定参数的方式


如上两种方式,必须是当parameterType都是统一类型时才行。

方式三: map的形式传递,

形如上面 输入/输出类型里提到的,最常用,不赘述

mybatis常用标签

1、resultMap标签

用来映射自定义查询结果集,例如查询结果是VO之类的
    
    

2、sql标签

用来定义表中出现的所有字段,方便其它地方调用
    id, order_id, phone, item_id, status, register_time, is_vip, create_time, update_time

3、include标签

引用公用代码,例如上面的SQL标签

4、select、insert、delete、update标签

相对应增删改查操作,不赘述

5、where标签

(经常使用,避免使用where 1=1),如果某一个条件符合,会动态拼接where,如下示例,当定第一个条件order_id为空,phone不为空,则where标签会智能的去除and连接符

6、if标签

用来动态判断属性,和el表达式有点类似

7、foreach标签

常用来批量操作时拼接条件,其中item表示循环体的别名,collection可以为list、Map、array
    update points_mall_virtual_code_info set notice_status=1,status=1 where order_id in
    
        #{item}
    

新增返回主键id

keyProperty表示pojo的属性,keyColumn表示表的主键名称,useGeneratedKeys="true"表示要使用自增主键


逆向工程插件-生成pojo和xml

这个比较简单,直接移步至我的博客资源 click here  下载这个资源后直接用idea或eclipse打开并修改数据库连接信息、表名、targetPackage目录即可,运行MyBatisGeneratorMain类的main方法即可生成pojo和xml,拷贝至你的项目即可,解耦于项目,非常方便。

你可能感兴趣的:(Java,mybaits,Java编程之路)