mybatis一些小技巧

mybatis一些小技巧

  • 1.#{}和${}的区别
  • 2.别名机制
  • 3.mapper配置
  • 4.配置模板
  • 5.插入数据时获取自动生成的主键

1.#{}和${}的区别

  (1)#{}
    底层使用PreparedStatement:先进行SQL语句的编译,然后给SQL语句占位符 ? 传值.可以避免SQL注入的风险
  (2)${}
    底层使用Statement:先进行SQL语句的拼接,然后再给SQL语句进行编译.存在SQL注入的风险
  (3)原则:优先使用#{},这是原则,避免SQL注入的风险
  (4)何时需要使用${}
    如果需要SQL语句的关键字放到SQL语句中,只能使用${},因为#{}是以值的方式放到SQL语句中的
    向SQL语句拼接表名需要使用${}
    批量删除数据 delete from t_car where id in(${ids})
    模糊查询
      需求:根据汽车品牌进行模糊查询 select * from t_car where brand like '%奔驰%'
      (1)'%${brand}%'
      (2)concat函数(专门进行字符串拼接的函数) concat('%',#{brand},'%')
      (3)"%"#{brand}"%"

2.别名机制


  
      
      
      
      
  

3.mapper配置

(1)
    从类的根路径下开始查找资源,采用这种方式,配置文件必须放到类路径当中
  (2)
    这是一种绝对路径的方式,这种方式不要求配置文件必须放在类路径中,只要提供一个绝对路径即可.使用极少,一致性太差
  (3)
    提供的是mapper接口的全限定接口名,必须带有包名.如果采用这种方式,必须保证CarMapper.xml文件和CarMapper接口
    必须在同一个包下
  (4)最终直接将使用指定包的方式(前提是接口和xml文件放在名字一致的包下)
  
  提醒:在resource目录下新建多重目录的话,需要 com/mybatis/mapper 这种方式创建

4.配置模板

文件-->设置-->编辑器-->文件和代码模板-->点"+"

5.插入数据时获取自动生成的主键

  
  
      insert into t_car values(null,#{cauNum},#{brand},#{guidePrice},#{produceTime},#{carType})
  

你可能感兴趣的:(mybatis,java,数据库)