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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM