4.0 MyBatis_映射文件_增删改查

逃离我推掉我的手 2022-05-30 23:56 258阅读 0赞

一、mybatis的增删改查

1、修改hotelMapper接口

复制代码

  1. package com.pjf.mybatis.dao;
  2. import com.pjf.mybatis.po.Hotel;
  3. public interface HotelMapper {
  4. public Hotel getHotel(Integer i);
  5. public void updateHotel(Hotel hotel);
  6. public void insertHotel(Hotel hotel);
  7. public void deleteHotel(Integer i);
  8. }

复制代码

2、修改hotelMapper.xml文件

复制代码

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
  3. <mapper namespace="com.pjf.mybatis.dao.HotelMapper">
  4. <!-- public Hotel getHotel(Integer i); -->
  5. <select id="getHotel" resultType="com.pjf.mybatis.po.Hotel">
  6. select id,hotel_name as
  7. hotelName, hotel_address as hotelAddress, price from hotel
  8. where
  9. id=#{id}
  10. </select>
  11. <!-- public void updateHotel(Hotel hotel); -->
  12. <update id="updateHotel" parameterType="com.pjf.mybatis.po.Hotel">
  13. update hotel set
  14. price=#{price} where id =#{id}
  15. </update>
  16. <!-- public void insertHotel(Hotel hotel); -->
  17. <insert id="insertHotel" parameterType="com.pjf.mybatis.po.Hotel">
  18. insert into hotel(id,hotel_name,hotel_address,price)
  19. value(#{id},#{hotelName},#{hotelAddress},#{price})
  20. </insert>
  21. <!-- public void deleteHotel(Integer i); -->
  22. <delete id="deleteHotel">
  23. delete from hotel where id=#{id}
  24. </delete>
  25. </mapper>

复制代码

3、测试类

复制代码

  1. package com.pjf.mybatis;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import org.apache.ibatis.io.Resources;
  5. import org.apache.ibatis.session.SqlSession;
  6. import org.apache.ibatis.session.SqlSessionFactory;
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  8. import org.junit.Test;
  9. import com.pjf.mybatis.dao.HotelMapper;
  10. import com.pjf.mybatis.po.Hotel;
  11. public class TestHotel {
  12. public SqlSessionFactory sqlSessionFactory() throws IOException {
  13. // mybatis的配置文件
  14. String resource = "mybatis_config.xml";
  15. // 使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)TestHotel.class.getClassLoader()
  16. InputStream is = Resources.getResourceAsStream(resource);
  17. // 构建sqlSession的工厂
  18. SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
  19. return sessionFactory;
  20. }
  21. // 查
  22. @Test
  23. public void getHotel() throws IOException {
  24. SqlSessionFactory sessionFactory = sqlSessionFactory();
  25. SqlSession session = sessionFactory.openSession();
  26. HotelMapper hotelMapper = session.getMapper(HotelMapper.class);
  27. System.out.println(hotelMapper.getClass());
  28. Hotel hotel = hotelMapper.getHotel(1001);
  29. System.out.println(hotel);
  30. session.close();
  31. }
  32. // 改
  33. @Test
  34. public void updateHotel() throws IOException {
  35. SqlSessionFactory sessionFactory = sqlSessionFactory();
  36. //注:这里使用sessionFactory.openSession();需要手动提交sql:session.commit();
  37. //如果这里使用sessionFactory.openSession(true);就可以自动提交
  38. SqlSession session = sessionFactory.openSession();
  39. HotelMapper hotelMapper = session.getMapper(HotelMapper.class);
  40. Hotel hotel = new Hotel(1001, "南京玄武饭店", "鼓楼区中央路193号", 997);
  41. hotelMapper.updateHotel(hotel);
  42. session.commit();
  43. session.close();
  44. }
  45. // 增
  46. @Test
  47. public void insertHotel() throws IOException {
  48. SqlSessionFactory sessionFactory = sqlSessionFactory();
  49. SqlSession session = sessionFactory.openSession();
  50. HotelMapper hotelMapper = session.getMapper(HotelMapper.class);
  51. Hotel hotel = new Hotel(1005, "南京饭店", "鼓楼区中央路001号", 997);
  52. hotelMapper.insertHotel(hotel);
  53. session.commit();
  54. session.close();
  55. }
  56. // 删
  57. @Test
  58. public void deleteHotel() throws IOException {
  59. SqlSessionFactory sessionFactory = sqlSessionFactory();
  60. SqlSession session = sessionFactory.openSession();
  61. HotelMapper hotelMapper = session.getMapper(HotelMapper.class);
  62. hotelMapper.deleteHotel(1005);
  63. session.commit();
  64. session.close();
  65. }
  66. }

复制代码

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

二、自增主键的获取

修改hotelMapper.xml文件

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

复制代码

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
  3. <mapper namespace="com.pjf.mybatis.dao.HotelMapper">
  4. <!-- public Hotel getHotel(Integer i); -->
  5. <select id="getHotel" resultType="com.pjf.mybatis.po.Hotel">
  6. select id,hotel_name as
  7. hotelName, hotel_address as hotelAddress, price from hotel
  8. where
  9. id=#{id}
  10. </select>
  11. <!-- public void updateHotel(Hotel hotel); -->
  12. <update id="updateHotel" parameterType="com.pjf.mybatis.po.Hotel">
  13. update hotel set
  14. price=#{price} where id =#{id}
  15. </update>
  16. <!-- public void insertHotel(Hotel hotel); -->
  17. <!-- useGeneratedKeys 使用自增主键获得主键值策略
  18. keyProperty 指定对应的主键属性值,也就是mybatis获得主键值后,会传给javaBean中的属性
  19. -->
  20. <insert id="insertHotel" parameterType="com.pjf.mybatis.po.Hotel" useGeneratedKeys="true" keyProperty="id">
  21. insert into hotel(id,hotel_name,hotel_address,price)
  22. value(#{id},#{hotelName},#{hotelAddress},#{price})
  23. </insert>
  24. <!-- public void deleteHotel(Integer i); -->
  25. <delete id="deleteHotel">
  26. delete from hotel where id=#{id}
  27. </delete>
  28. </mapper>

复制代码

测试

package com.pjf.mybatis;

  1. import java.io.IOException;
  2. import java.io.InputStream;
  3. import org.apache.ibatis.io.Resources;
  4. import org.apache.ibatis.session.SqlSession;
  5. import org.apache.ibatis.session.SqlSessionFactory;
  6. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  7. import org.junit.Test;
  8. import com.pjf.mybatis.dao.HotelMapper;
  9. import com.pjf.mybatis.po.Hotel;
  10. public class TestHotel {
  11. public SqlSessionFactory sqlSessionFactory() throws IOException {
  12. // mybatis的配置文件
  13. String resource = "mybatis_config.xml";
  14. // 使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)TestHotel.class.getClassLoader()
  15. InputStream is = Resources.getResourceAsStream(resource);
  16. // 构建sqlSession的工厂
  17. SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
  18. return sessionFactory;
  19. }
  20. // 增
  21. @Test
  22. public void insertHotel() throws IOException {
  23. SqlSessionFactory sessionFactory = sqlSessionFactory();
  24. SqlSession session = sessionFactory.openSession();
  25. HotelMapper hotelMapper = session.getMapper(HotelMapper.class);
  26. Hotel hotel = new Hotel(bull, "南京饭店", "鼓楼区中央路001号", 997);
  27. hotelMapper.insertHotel(hotel);
  28. //直接打印出自增主键的值
  29. System.out.println(hotel.getId());
  30. session.commit();
  31. session.close();
  32. }
  33. }

发表评论

表情:
评论列表 (有 0 条评论,258人围观)

还没有评论,来说两句吧...

相关阅读