[mybatis]基本的CRUD操作

首先简要说明一下占位符与两个Session的方法:

    <!-- 
        #{}和${}:
        #{} : 表示一个占位符号
              #{}接收输入参数,类型可以是简单类型,pojo,hashmap
               如果接收简单类型,#{}中可以写成value或其他名称
               如果接收pojo对象值,通过ONGL
               读取对象中的属性值,通过属性.属性.属性名获取对象值
        ${} : 表示一个拼接符号
              ${}接收输入参数,类型可以是简单类型,pojo,hashmap
               如果接收简单类型,${}中只能写成value
               如果接收pojo对象值,通过ONGL
               读取对象中的属性值,通过属性.属性.属性名获取对象值
    -->
    /* SqlSession 中的两个方法 :
     * selectOne() 与 selectList()
     * 
     * selectOne() : 表示查询出一条记录进行映射,
     *                如果使用selectOne()可以实现,
     *                使用selectList()也可以实现(list中只有一个对象)
     * selectList(): 表示查询出一个集合进行映射
     */

添加一条记录 :

    <!-- 
        添加用户 : 
        parameterType:指定输入参数,类型是pojo(包括用户信息)
        #{}中指定pojo的属性名,接收到pojo对象的属性值,mybatis通过OGNL获取对象的属性值
    -->
    <insert id="insertUser" parameterType="Bean.User">
        <!-- 自增生成主键 --> 
        <!-- 
            自增生成主键,将插入的主键返回,返回到user对象中,
            insert语句里不用插入id和#{id}

            SELECT LAST_INSERT_ID() : 得到刚insert进去记录的主键值,只适用于自增
            keyProperty : 将查询到主键值设置到User对象的id属性里
            order : SELECT LAST_INSERT_ID()执行顺序,相对于insert的执行顺序
            resultType : 返回值类型为Integer
        -->
        <!--
        <selectKey keyProperty="id" ,order="AFTER" resultType="java.lang.Integer">
            SELECT LAST_INSERT_ID()
        </selectKey>
        -->


        <!-- uuid生成主键 -->
        <!-- 
            使用mysql的uuid生成主键,insert语句中要添加id
            执行过程:
            首先通过uuid()得到主键,将主键设置到user对象的id属性中
            其次在执行insert时,从user对象中取出id属性值
        -->
        <!--
        <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">
            SELECT uuid()
        </selectKey>
        insert into user(id,username,birthday,sex,address)
        value(#{id},#{username},#{birthday},#{sex},#{address})
        -->


        <!-- oracle的序列生成主键 -->
        <!--
        <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">
            SELECT 序列名.nextval()
        </selectKey>
        insert into user(id,username,birthday,sex,address)
        value(#{id},#{username},#{birthday},#{sex},#{address})
        -->     

        insert into user(id,username,birthday,sex,address)
        <!-- #{}中的参数名必须为User对象的属性名 --> 
        value(#{id},#{username},#{birthday},#{sex},#{address})
    </insert>
        //新建一个用户        
        User user = new User(8,"用户名","男",new Date(),"地址");
        /*
         * 添加一条记录
         * 添加成功 : 返回1
         * 添加失败 : 什么都不返回
         */
        int insert = session.insert("text.insertUser", user);
        //提交事物
        session.commit();
        //释放资源
        session.close();

根据id删除一条记录 :

    <!--
        删除一个用户
        根据id删除用户,需要输入id值    
    -->
    <delete id="deleteUser" parameterType="java.lang.Integer">
        delete from user where id = #{id}
    </delete>
        /*
         * 删除用户 : 删除成功返回1
         *            删除失败返回0       
         */
        int delete = session.delete("text.deleteUser", 7 );

        //提交事物
        session.commit();
        //释放资源
        session.close();

根据id更改一条记录 :

    <!--
        根据id更新用户
        parameterType : 指定id和更新信息,注意:id必须存在
    -->
    <update id="updateUser" parameterType="Bean.User">
        update user
        set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address}
        where id = #{id}
    </update>
        //要更新的用户信息
        //必须要设置id,否则更新全部
        User user = new User(3,"用户名","男",new Date(),"地址");

        /*
         * 更新用户信息
         * 更新成功 : 返回值为1
         */
        int update = session.update("text.updateUser",user);

        //提交事物
        session.commit();
        //释放资源
        session.close();    

查询单条记录 :

    <select id="findUserById" parameterType="int" resultType="Bean.User">
        SELECT * FROM USER WHERE ID=#{id}
    </select>
        User user = session.selectOne("text.findUserById", 1);
        //释放SqlSession资源
        session.close();

查询多条记录 :

    <!-- 
        根据用户名模糊查询,可能返回多条记录
        resultType:指定的就是单条记录所映射的java类型
        ${username}:表示拼接sql串,将接收到参数内容不加任何修饰拼接在sql中
        ${value}:代表拼接参数,{}里面在XML中只能写value
    -->
    <select id="findUserByName" parameterType="java.lang.String" resultType="Bean.User">
        SELECT * FROM USER WHERE USERNAME LIKE '%${value}%'
    </select>
        //list中的User和映射文件中resultType指定的User类型一致
        List<User> list = session.selectList("text.findUserByName", "A");
        //释放资源
        session.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值