zoukankan      html  css  js  c++  java
  • mybatis

    #{}表示一个占位符,通过ognl来读取属性值
    ${}表示一个拼接号,将接受到的参数的内容不加任何修饰拼接到sql中。会引用sql注入,所以不建议使用
    selectOne表示查询出一条记录进行映射,如果使用selectOne可以实现,那么使用selectList也可以实现(list中只有一个对象)
    selectList表示查询一个列表记录
    
    select * from user where user like `%${value}%`
    
     insert into user(id, userName, password) values(#{id}, #{userName}, #{password})
    id是自增的 可以不写
        <insert id="addUser" parameterType="com.hust.model.User">
            <!-- 只适用自增的主键 -->
            <selectKey  keyProperty="id" order="AFTER"  resultType="java.lang.Integer">
                SELECT LAST_INSERT_ID()
            </selectKey>
            insert into user(userName, password) values(#{userName}, #{password})
            <!--insert into user(id, userName, password) values(#{id}, #{userName}, #{password})-->
        </insert>
    
    uuid
        <insert id="addUser" parameterType="com.hust.model.User">
            <!-- 适用非自增的主键 -->
            <selectKey  keyProperty="id" order="BEFORE"  resultType="java.lang.String">
                SELECT uuid()
            </selectKey>
            insert into user(id, userName, password) values(#{id}, #{userName}, #{password})
        </insert>
    
    
    hibearnate:是一个标准的ORM(对象关系映射)框架。入门门槛高,不需要写sql,sql自动生成。
    对sql语句进行优化、修改比较困难。
    应用场景:适用需求变化不多的中小型项目。
    
    mybatis:专注sql本身,需要程序员自己编写sql语句。sql修改,优化比较方便。它是一个不完全的ORM框架。
    mybatis也可以实现映射(输入输出映射)
    适用于需求变化较多的项目,比如互联网项目。
    
    
    
    mapper代理方法
    编写mapper接口(相当于dao接口),需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类代理对象
    编写mapper.xml映射文件
    
    开发规范
    1、mapper.xml
    namespace 命名空间,作用就是对sql进行分类管理,理解sql隔离
    2、mapper.java接口中的方法名和mapper.xml中的statement的id一致
    3、mapper.java接口中的方法参数类型、返回类型和mapper.xml中的statement的perameterType、resultType一致。
    
    mapper接口方法的参数只能有一个,如果需要多个参数,则需要封装成一个对象来作为参数
    即可以使用包装类型的pojo满足不同的业务方法的需求,但service中建议不要使用包装类型
    
    POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans
    
    mybatis默认支持的别名
    int  long  bigDecimal等基本的数据类型
        <typeAliases>
            <!-- 单个别名定义 -->
            <typeAlias alias="User" type="com.hust.model.User" />
            <!-- 批量定义别名,自动定义别名,别名就是类名(首字母大写或小写都可以,通常小写) -->
            <package name="com.hust.model"/>
            <package name="com.hust.model"/>
        </typeAliases>
    
    
    typeHandlers类型处理器
    通常mybatis提供的类型处理器能满足日常需求
    
    
    <configuration>
        <typeAliases>
            <!-- 单个别名定义 -->
            <typeAlias alias="User" type="com.hust.model.User" />
            <!-- 批量定义别名,自动定义别名,别名就是类名(首字母大写或小写都可以) -->
            <package name="com.hust.model"/>
            <package name="com.hust.model"/>
        </typeAliases>
        
        <mappers>        
            <!-- 通过resource方法一次加载一个映射文件 -->
            <mapper resource="com/hust/mapping/UserMapper.xml" />
            
            <!-- 通过mapper接口加载映射文件 -->
            <!-- 必须遵守一些规范:mapper接口类名和mapper.xml映射文件名一致,且在同一个目录中 -->
            <!-- com.hust.dao.UserMapper.xml com.hust.dao.UserMapper.java  -->
            <mapper class="com.hust.dao.UserMapper"/>
            
            <!-- 批量加载mapper 指定mapper接口的包名,自动扫描包下所有mapper。-->
            <!-- 同样必须遵守 mapper接口类名和mapper.xml映射文件名一致,且在同一个目录中 -->
            <package name="com.hust.dao"/>
        </mappers>
    </configuration>
  • 相关阅读:
    android的FATAL EXCEPTION: main错误
    ORA12560: TNS: 协议适配器错误
    BroadcastReceiver应用详解
    using C# 详解
    mysqlproxy0.8版本读写分离测试总结
    Mysql SHOW PROCESSLIST Sending data
    [转载]大型网站运维探讨和心得
    找出并optimization表
    mysql中普通索引和唯一索引的效率对比
    ps aux 中STAT 解释
  • 原文地址:https://www.cnblogs.com/muhe221/p/8950478.html
Copyright © 2011-2022 走看看