zoukankan      html  css  js  c++  java
  • mybatis的知识点

    mybatis核心配置文件的配置
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <!-- 加载properties配置文件 -->
        <properties resource="db.properties"></properties>
        
        <!-- mybatis起别名 -->
        <typeAliases>
            <!-- 
                type: 起别名的类型
                alias: 别名,别名没有大小写区分
            <typeAlias type="cn.itcast.pojo.User" alias="user"/>
            -->
            
            <!-- 
                批量扫描包,批量起别名
                    别名: 就是类名
              -->
            <package name="cn.itcast.pojo"/>
        </typeAliases>
        
        
        <!-- 和spring整合后 environments配置将废除 -->
        <environments default="development">
            <environment id="development">
                <!-- 使用jdbc事务管理 -->
                <transactionManager type="JDBC" />
                <!-- 数据库连接池 -->
                <dataSource type="POOLED">
                    <property name="driver" value="${jdbc.driver}" />
                    <property name="url"
                        value="${jdbc.url}" />
                    <property name="username" value="${jdbc.username}" />
                    <property name="password" value="${password}" />
                </dataSource>
            </environment>
        </environments>
        
        <mappers>
            <!-- 
                mapper标签:引入映射文件
                    url: 必须要写绝对路径
                    resource: 相对路径
                    
            -->
            <mapper resource="User.xml"/>
            
            <!-- 
                Class属性: 指定接口的全路径名称
                    1: 接口文件和映射文件必须在同一个包下
                    2: 接口文件和映射文件必须名称相同,除了后缀名
            <mapper class="cn.itcast.mapper.UserMapper"/>
            -->
            
            <!-- 
            批量加载映射文件
                1: 接口文件和映射文件必须在同一个包下
                2: 接口文件和映射文件必须名称相同,除了后缀名
            -->
            <package name="cn.itcast.mapper"/>
            
        </mappers>
        
    </configuration>
     
    <mapper namespace="test">:相当于一个名称如果有多个实体类里面有多个一样的方法,为了方便区分
    CRUD
        <select id="findById" parameterType="int" resultType="cn.itcast.pojo.User">
            select * from user where id = #{id}
        </select>
        <!-- 模糊查询性张的 -->
        <select id="findLikeusername" parameterType="string" resultType="cn.itcast.pojo.User">
            select * from user where username like '%张%'
        </select>
        
        <insert id="insertUser" parameterType="cn.itcast.pojo.User">
            insert into user(username,sex,address,birthday) values(#{username},#{sex},#{address},#{birthday})
            <selectKey keyProperty="id" resultType="int" order="AFTER">
                select LAST_INSERT_ID()
            </selectKey>
        </insert>
        
        <update id="updateUser" parameterType="cn.itcast.pojo.User">
            update user set username = #{username}  where id = #{id};
        </update>
        
        <delete id="deleteUser" parameterType="cn.itcast.pojo.User">
            delete from user where id = #{id}
        </delete>
        使用动态代理的方式开发
        <mapper namespace="cn.itcast.mapper.UserMapper">:namespace必须是接口的全限定类名
        而且xml配置文件必须的跟接口的名称保持一致
     
    核心配置文件的dtd约束
    <!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
    配置文件的dtd约束
    <!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     
     
     
     
    5.6.1. #{}和${}
    #{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换。#{}可以有效防止sql注入。 #{}可以接收简单类型值或pojo属性值。 如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。
     
    ${}表示拼接sql串,通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换, ${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。
     
     
    5.6.2. parameterType和resultType
    parameterType:指定输入参数类型,mybatis通过ognl从输入对象中获取参数值拼接在sql中。
    resultType:指定输出结果类型,mybatis将sql查询结果的一行记录数据映射为resultType指定类型的对象。如果有多条数据,则分别进行映射,并把对象放到容器List中
     
    5.6.3. selectOne和selectList
    selectOne查询一条记录,如果使用selectOne查询多条记录则抛出异常:
    org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 3
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:70)
    selectList可以查询一条或多条记录。
     
     
    自定义别名
        <typeAliases>
            <!-- 单个别名定义 -->
            <typeAlias alias="user" type="cn.itcast.mybatis.pojo.User" />
            <!-- 批量别名定义,扫描整个包下的类,别名为类名(大小写不敏感) -->
            <package name="cn.itcast.mybatis.pojo" />
            <package name="其它包" />
        </typeAliases>
     
        必须在property上面和datasource下面
        mybatis自带的别名
        别名    映射的类型
            _byte    byte 
            _long    long 
            _short    short 
            _int    int 
            _integer    int 
            _double    double 
            _float    float 
            _boolean    boolean 
            string    String 
            byte    Byte 
            long    Long 
            short    Short 
            int    Integer 
            integer    Integer 
            double    Double 
            float    Float 
            boolean    Boolean 
            date    Date 
            decimal    BigDecimal    这个是比double还要大的,如果银行开发double是容不下这么大的数字的就用这个
            bigdecimal    BigDecimal 这个是比上面那个还要大
            map    Map
            
            
            7.4.1. <mapper resource=" " />
                使用相对于类路径的资源(现在的使用方式)
                如:<mapper resource="sqlmap/User.xml" />
     
            7.4.2. <mapper class=" " />
                    使用mapper接口类路径
                    如:<mapper class="cn.itcast.mybatis.mapper.UserMapper"/>
     
                    注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。
     
    7.4.3. <package name=""/>
                    注册指定包下的所有mapper接口
                    如:<package name="cn.itcast.mybatis.mapper"/>
                    注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    SpringCloud Alibaba微服务实战十
    万字长文!分布式锁的实现全都在这里了
    python编程中的小技巧(持续更新)
    工作十年的数据分析师被炒,没有方向,你根本躲不过中年危机
    github入门操作快速上手
    167. 两数之和 II
    167. 两数之和 II
    167. 两数之和 II
    怎么使用Fiddler进行抓包
    怎么使用Fiddler进行抓包
  • 原文地址:https://www.cnblogs.com/guanzhuang/p/8214908.html
Copyright © 2011-2022 走看看