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(); } }
  • 相关阅读:
    线性表的各种基本操作
    malloc&&free的系统运行机制及其源代码的理解
    剪枝的定义&&hdu1010
    hdu 1045
    hdu2094 stl之set的应用
    关联式容器的总结
    STL之map容器的详解
    2018-2019 ACM-ICPC 焦作赛区 部分题解
    2018-2019 ACM-ICPC 沈阳赛区 K. Let the Flames Begin
    2018-2019 ACM-ICPC 徐州区域赛 部分题解
  • 原文地址:https://www.cnblogs.com/pjfmeng/p/7681118.html
Copyright © 2011-2022 走看看