MyBatis 笔记

生成器

  • maven
            
                org.mybatis.generator
                mybatis-generator-maven-plugin
                1.3.7
                


                    true


                    true
                
            

 
            
                src/main/java
                
                    **/*.xml
                
            
            
                src/main/resources
            

  • 生成器配置



    

    
        
            
            
        

        

        
            
            
        

        
            
            
        

        
            
        

        
            
        
        
  • 转换数据库时间类型
  • 启用注释生成, 生成器再次生成 会根据 @mbg.generated 标识 来判断是不是要重新生成
  • isGeneratedAlways="true"会忽略数据库自动生成字段的insert,update,通常用于row_version字段
  
            
            
        

MyBatis Generator 详解

Mybatis

  • maven
    
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            1.3.1
        

        
            com.github.pagehelper
            pagehelper
            5.0.4
        
  • @MapperScan({"cn.tiantianquan.springant.mybatis.modelMapper", "cn.tiantianquan.springant.mybatis.mapper"}) 应用启动程序添加注解,扫描所有mapper注入,相当于在Mapper接口上注解@Mapper
  • 替换模板

        pm_user
    

    
  • ResultMap 继承

        
    
  • where语句
    使用 where 标签包裹,没有条件会自动删除where
 
  • 传入参数
    使用 @Param 注解指定传入参数名称
List select(
            @Param(value = "loginName") String loginName,
            @Param(value = "trueName") String trueName
    );

  • 自动映射
    application.properties 中设置, 映射数据库的下划线模式到驼峰模式
    自动映射默认开启
    有三种自动映射等级:
    NONE - 禁用自动映射。仅设置手动映射属性。
    PARTIAL - 将自动映射结果除了那些有内部定义内嵌结果映射的(joins).
    FULL - 自动映射所有。
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.auto-mapping-behavior=partial #默认设置

官方文档:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#Auto-mapping

  • 防注入
    mybatis中的#和$的区别
  1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".
  2. 将传入的数据直接显示生成在sql中。如:order byuser_id$,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id.
  3. #方式能够很大程度防止sql注入。
  4. $方式无法防止Sql注入。
  5. $方式一般用于传入数据库对象,例如传入表名.
  6. 一般能用#的就别用$.

https://blog.csdn.net/kakaxi_77/article/details/46007239

你可能感兴趣的:(MyBatis 笔记)