zoukankan      html  css  js  c++  java
  • mybatis学习(五)——增删改查及自增主键的获取

    一、mybatis的增删改查

    1、修改hotelMapper接口

    package com.pjf.mybatis.dao;
    
    import com.pjf.mybatis.po.Hotel;
    
    public interface HotelMapper {
    
        public Hotel getHotel(Integer i);
    
        public void updateHotel(Hotel hotel);
    
        public void insertHotel(Hotel hotel);
    
        public void deleteHotel(Integer i);
    }

    2、修改hotelMapper.xml文件

    <?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="com.pjf.mybatis.dao.HotelMapper">
        <!-- public Hotel getHotel(Integer i); -->
        <select id="getHotel" resultType="com.pjf.mybatis.po.Hotel">
            select id,hotel_name as
            hotelName, hotel_address as hotelAddress, price from hotel
            where
            id=#{id}
        </select>
        <!-- public void updateHotel(Hotel hotel); -->
        <update id="updateHotel" parameterType="com.pjf.mybatis.po.Hotel">
            update hotel set
            price=#{price} where id =#{id}
        </update>
        <!-- public void insertHotel(Hotel hotel); -->
        <insert id="insertHotel" parameterType="com.pjf.mybatis.po.Hotel">
            insert into hotel(id,hotel_name,hotel_address,price)
            value(#{id},#{hotelName},#{hotelAddress},#{price})
        </insert>
        <!-- public void deleteHotel(Integer i); -->
        <delete id="deleteHotel">
            delete from hotel where id=#{id}
        </delete>
    
    </mapper>

    3、测试类

    package com.pjf.mybatis;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import org.junit.Test;
    
    import com.pjf.mybatis.dao.HotelMapper;
    import com.pjf.mybatis.po.Hotel;
    
    public class TestHotel {
    
        public SqlSessionFactory sqlSessionFactory() throws IOException {
            // mybatis的配置文件
            String resource = "mybatis_config.xml";
            // 使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)TestHotel.class.getClassLoader()
            InputStream is = Resources.getResourceAsStream(resource);
            // 构建sqlSession的工厂
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
            return sessionFactory;
        }
    
        //
        @Test
        public void getHotel() throws IOException {
    
            SqlSessionFactory sessionFactory = sqlSessionFactory();
            SqlSession session = sessionFactory.openSession();
            HotelMapper hotelMapper = session.getMapper(HotelMapper.class);
            System.out.println(hotelMapper.getClass());
            Hotel hotel = hotelMapper.getHotel(1001);
            System.out.println(hotel);
            session.close();
        }
    
        //
        @Test
        public void updateHotel() throws IOException {
            SqlSessionFactory sessionFactory = sqlSessionFactory();
            //注:这里使用sessionFactory.openSession();需要手动提交sql:session.commit();
            //如果这里使用sessionFactory.openSession(true);就可以自动提交
            SqlSession session = sessionFactory.openSession();
            HotelMapper hotelMapper = session.getMapper(HotelMapper.class);
            Hotel hotel = new Hotel(1001, "南京玄武饭店", "鼓楼区中央路193号", 997);
            hotelMapper.updateHotel(hotel);
            session.commit();
            session.close();
        }
    
        //
        @Test
        public void insertHotel() throws IOException {
            SqlSessionFactory sessionFactory = sqlSessionFactory();
            SqlSession session = sessionFactory.openSession();
            HotelMapper hotelMapper = session.getMapper(HotelMapper.class);
            Hotel hotel = new Hotel(1005, "南京饭店", "鼓楼区中央路001号", 997);
            hotelMapper.insertHotel(hotel);
            session.commit();
            session.close();
        }
    
        //
        @Test
        public void deleteHotel() throws IOException {
            SqlSessionFactory sessionFactory = sqlSessionFactory();
            SqlSession session = sessionFactory.openSession();
            HotelMapper hotelMapper = session.getMapper(HotelMapper.class);
            hotelMapper.deleteHotel(1005);
            session.commit();
            session.close();
        }
    }

    这样就可以实现增删改查了

    二、自增主键的获取

    修改hotelMapper.xml文件

    指定useGeneratedKeys 使用自增主键获得主键值策略,keyProperty 指定对应的主键属性值,也就是mybatis获得主键值后,会传给javaBean中的属性

    <?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="com.pjf.mybatis.dao.HotelMapper">
        <!-- public Hotel getHotel(Integer i); -->
        <select id="getHotel" resultType="com.pjf.mybatis.po.Hotel">
            select id,hotel_name as
            hotelName, hotel_address as hotelAddress, price from hotel
            where
            id=#{id}
        </select>
        <!-- public void updateHotel(Hotel hotel); -->
        <update id="updateHotel" parameterType="com.pjf.mybatis.po.Hotel">
            update hotel set
            price=#{price} where id =#{id}
        </update>
        <!-- public void insertHotel(Hotel hotel); -->
        <!-- useGeneratedKeys 使用自增主键获得主键值策略
             keyProperty  指定对应的主键属性值,也就是mybatis获得主键值后,会传给javaBean中的属性
         -->
        <insert id="insertHotel" parameterType="com.pjf.mybatis.po.Hotel" useGeneratedKeys="true" keyProperty="id">
            insert into hotel(id,hotel_name,hotel_address,price)
            value(#{id},#{hotelName},#{hotelAddress},#{price})
        </insert>
        <!-- public void deleteHotel(Integer i); -->
        <delete id="deleteHotel">
            delete from hotel where id=#{id}
        </delete>
    
    </mapper>

    测试

    package com.pjf.mybatis;
    
    import java.io.IOException;
    import java.io.InputStream;
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import org.junit.Test;
    
    import com.pjf.mybatis.dao.HotelMapper;
    import com.pjf.mybatis.po.Hotel;
    
    public class TestHotel {
    
        public SqlSessionFactory sqlSessionFactory() throws IOException {
            // mybatis的配置文件
            String resource = "mybatis_config.xml";
            // 使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)TestHotel.class.getClassLoader()
            InputStream is = Resources.getResourceAsStream(resource);
            // 构建sqlSession的工厂
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
            return sessionFactory;
        }
        //
        @Test
        public void insertHotel() throws IOException {
            SqlSessionFactory sessionFactory = sqlSessionFactory();
            SqlSession session = sessionFactory.openSession();
            HotelMapper hotelMapper = session.getMapper(HotelMapper.class);
            Hotel hotel = new Hotel(bull, "南京饭店", "鼓楼区中央路001号", 997);
            hotelMapper.insertHotel(hotel);
    //直接打印出自增主键的值 System.out.println(hotel.getId()); session.commit(); session.close(); } }
  • 相关阅读:
    SDUT 2143 图结构练习——最短路径 SPFA模板,方便以后用。。 Anti
    SDUT ACM 1002 Biorhythms 中国剩余定理 Anti
    nyist OJ 119 士兵杀敌(三) RMQ问题 Anti
    SDUT ACM 2157 Greatest Number Anti
    SDUT ACM 2622 最短路径 二维SPFA启蒙题。。 Anti
    二叉索引树 区间信息的维护与查询 Anti
    SDUT ACM 2600 子节点计数 Anti
    UVA 1428 Ping pong 二叉索引树标准用法 Anti
    2010圣诞Google首页效果
    Object
  • 原文地址:https://www.cnblogs.com/pjfmeng/p/7681118.html
Copyright © 2011-2022 走看看