Mybatis 에서 만능 맵 전 참 을 사용 하여 실현

프로 그래 밍 에서 우리 의 실체 류 나 데이터 베이스 에 표 시 된 필드 나 매개 변수 가 너무 많은 상황 을 만 날 수 있 습 니 다.이 럴 때 Map 으로 전달 하 는 것 이 이상 적 인 선택 입 니 다.
Map 의 특성 은 키 값 에 대응 하 는 것 입 니 다.키 키 하나만 확인 하면 값 value 는 모든 데이터 일 수 있 습 니 다.그러면 map 메모리 에 모든 데 이 터 를 저장 할 수 있 습 니 다.
다음 예 는 my batis 에서 Map 과 결합 하여 기본 적 인 첨삭 검 사 를 실현 하 는 것 을 보 여 줍 니 다.
데이터베이스 시트(fruits)구조:

실체 클래스:

package com.pojo.pp1;
 
import java.math.BigDecimal;
 
/**
 *   :
 *    
 * @author:LiYansheng
 * @date:2021/07/20 22:29
 * @version:
 */
public class fruits {
    private int id;
    private String name;
    private BigDecimal price;
 
    public fruits(int id, String name, BigDecimal price) {
        this.id = id;
        this.name = name;
        this.price = price;
    }
 
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public BigDecimal getPrice() {
        return price;
    }
 
    public void setPrice(BigDecimal price) {
        this.price = price;
    }
 
    @Override
    public String toString() {
        return "fruits{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", price=" + price +
                '}';
    }
}
Dao 인터페이스:

package com.pojo.Dao;
 
import com.pojo.pp1.fruits;
import org.apache.ibatis.annotations.Param;
 
import java.util.List;
import java.util.Map;
/**
 *   :
 *
 * @author:LiYansheng
 * @date:2021/07/20 22:31
 * @version:
 */
public interface fruitsDao {
    /*      */
    List<fruits> getfruitsList();
 
    /*  ID    */
    fruits getfruitsById(@Param("map") Map<String, Object> map);
 
    /*    */
    int addfruits(@Param("map") Map<String, Object> map);
 
    /*    */
    int deletefruits(@Param("map") Map<String, Object> map);
 
    /*    */
    int updatefruits(@Param("map") Map<String, Object> map);
}
Dao 인터페이스.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.pojo.Dao.fruitsDao">
    <select id="getfruitsList" resultType="fruits">
        select id,name,price from fruits
    </select>
 
    <select id="getfruitsById" parameterType="Map" resultType="fruits">
        select id,name,price from fruits where id=#{map.id};
    </select>
 
    <insert id="addfruits" parameterType="Map" >
        insert into fruits(id,name,price) values (#{map.id},#{map.name},#{map.price});
    </insert>
 
    <delete id="deletefruits" parameterType="Map" >
        delete from fruits where id=#{map.id};
    </delete>
 
    <update id="updatefruits" parameterType="Map" >
        update  fruits set name=#{map.name},price=#{map.price} where id=#{map.id}
    </update>
</mapper>
Test 클래스 에서 테스트 실행:

package com.pojo.Dao;
 
import com.pojo.pp1.fruits;
import com.utils.mybatisUtils;
 
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
 
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 *   :
 *
 * @author:LiYansheng
 * @date:2021/07/20 22:39
 * @version:
 */
public class fruitsDaoTest {
    @Test
    public void getfruitsListTest() {
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        fruitsDao fruitsDao = sqlSession.getMapper(com.pojo.Dao.fruitsDao.class);
        List<fruits> fruitsList = fruitsDao.getfruitsList();
        for (fruits f : fruitsList) {
            System.out.println(f);
        }
        sqlSession.close();
    }
    @Test
    public void getfruitsByIdTest() {
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        fruitsDao fruitsDao = sqlSession.getMapper(com.pojo.Dao.fruitsDao.class);
        Map<String, Object> map = new HashMap<>();
        map.put("id", 3);
        fruits f = fruitsDao.getfruitsById(map);
        System.out.println(f);
        sqlSession.close();
    }
    @Test
    public void addfruits() {
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        fruitsDao fruitsDao = sqlSession.getMapper(com.pojo.Dao.fruitsDao.class);
        Map<String, Object> map = new HashMap<>();
        map.put("id", 0);
        map.put("name", "watermelon");
        BigDecimal bigDecimal= BigDecimal.valueOf(2);
        map.put("price", bigDecimal);
        int a = fruitsDao.addfruits(map);
        if (a > 0) {
            System.out.println("    ok");
        }
        sqlSession.commit();
        sqlSession.close();
    }
    @Test
    public void deletefruits() {
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        fruitsDao fruitsDao = sqlSession.getMapper(com.pojo.Dao.fruitsDao.class);
        Map<String, Object> map = new HashMap<>();
        map.put("id", 3);
        int a = fruitsDao.deletefruits(map);
        if (a > 0) {
            System.out.println("    ok");
        }
        sqlSession.commit();
        sqlSession.close();
    }
    @Test
    public void updatefruits() {
        SqlSession sqlSession = mybatisUtils.getSqlSession();
        fruitsDao fruitsDao = sqlSession.getMapper(com.pojo.Dao.fruitsDao.class);
        Map<String, Object> map = new HashMap<>();
        map.put("id", 1);
        BigDecimal bigDecimal = BigDecimal.valueOf(5);
        map.put("name", "Big_apple");
        map.put("price", bigDecimal);
        int a = fruitsDao.updatefruits(map);
        if (a > 0) {
            System.out.println("    ok");
        }
        sqlSession.commit();
        sqlSession.close();
    }
}
테스트 결 과 는 모두 통과 할 수 있다.

주의해 야 할 점:
번 호 를 표시 하 는 곳 은 두 가지 유형 을 쓰 는 방식 이다.

두 번 째 방식 은 프로젝트 설정 에 resources 에서 my batis-config.xml 파일 에 다음 과 같은 형식 별명 을 추가 해 야 합 니 다.

<typeAliases>
        <typeAlias type="java.util.Map" alias="Map"/>
</typeAliases>
두 번 째 방법 을 추천 합 니 다.
마 이 바 티 스 에서 만능 맵 을 사용 하여 전 삼 을 실현 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 마 이 바 티 스 맵 전 삼 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기