[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();

你可能感兴趣的:(spring,mysql,Hibernate,mybatis,javaweb)