mybatis基础CURD的学习

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="dao.IUserDao">
    <!-- 重点之一-->
    <!--    配置数据库的列名与实体类中国属性名的对应关系
    <resultMap id="userMap" type="bean.User">
       主键的配置
       <id property="" column="">
        非主键的配置
        <result property=""column=""></result>
    </resultMap> -->

            <!-- SQL语句
                  配置查找
                  提供Sql语句 获取'PreparedSatement'
                  和返回的类型3
                  -->
    <!--查找所有-->
   <select resultType="bean.User" id="findAll">
      select * from user
   </select>

    <!--保存用户 插入   parameterType传进去的-->
    <insert id="saveUser" parameterType="bean.User">
    <!--  insert into user(username)values(#{userName},#{必须与对应的bean中对应})
      前面那个user()学过数据库应该都知道该怎么写-->

      <!--配置插入操作后,获取插入数据的id keyColumn列名称对应表
      有它存贮后id从null变成了数据库里存储的id
      -->
        <selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
            select  last_insert_id();
        </selectKey>

       insert into user(username)values(#{userName})
     </insert>

     <update id="updateUser" parameterType="bean.User">
         update user set username=#{userName}where id=#{id}
     </update>
     <!--可以写int可以Integer-->
    <delete id="deleteUser" parameterType="int">
        <!--可以id 也可以写userId-->
        /*一个参数时名字随便写*/
        delete from user where id=#{id}
    </delete>
     <!--根据id查询用户    -->
    <select id="findById" parameterType="int" resultType="bean.User">
        select * from user where id=#{id}
    </select>
    <!-- 重点之一-->
     <!--    模糊查询
      如果这样写必须写成value,源码里规定
      查询时就不需要加%了
      select * from user where username like '%${value}%'‘
      二者比较
      这种使用Statement拼接Sql
      下面那个用的时PrateStatement的?预处理方式
      -->
    <select id="findByName" parameterType="String" resultType="bean.User">
         <!--  传进的参数须带% 此方式更好-->
          select * from user where username like #{userName}

    </select> 
     <!--获取用户数    -->
    <select id="count" resultType="int">
        select count(*) from user
    </select>
    <!-- 重点之一-->
    <!-- 对实体类对象包装起来查询-->
    <select id="findUserByVo" parameterType="bean.QueryVo" resultType="bean.User">
         select * from user where username like #{user.userName}
    </select>
</mapper>

许多操作看Sql语句就能明白
学习到了三个重点:

1.模糊查询的俩种方式,一种得在set函数中自己加入%,一个必须严格使用vlaue

2.使用实体类对象包装查询

3.配置数据库与实体类的属性名对应:俩种方式一种Sql语句中起别名,一种写<resultMap>配置,二者优劣:前者执行效率高,后者只写一遍不用每条Sql都写开发好用

 

猜你喜欢

转载自www.cnblogs.com/gonT-iL-evoL-I/p/11693415.html