my batis 가 mapper 프 록 시 모드 를 실현 하 는 방식
id 값 에 따라 단일 데 이 터 를 조회 하 는 것 을 예 로 들 면
SqlMapConfig.xml 파일 작성
<configuration>
<!-- mybatis , spring , -->
<environments default="development">
<!-- -->
<environment id="development">
<!-- , mybatis --> <transactionManager type="JDBC" />
<!-- -->
<dataSource type="POOLED">
<property name = "driver" value = "com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/db_shop? useUnicode=true&characterEncoding=utf-8"/>
<property name="username" value="root"/> <property name="password" value=""/>
</dataSource>
</environment>
</environments>
<!-- **.xml -->
<mappers>
<mapper resource="product.xml"/>
</mappers>
</configuration>
출혈 모델 대상 작성:Product,가장 좋 은 필드 이름과 데이터베이스 에 있 는 필드 이름 은 항상
/**** <p>Title: Product</p> *
<p>Description: </p> *
@author Alon *
@date 2020 9 27 6:51:57
* @version 1.0 */
public class Product {
private int p_id;
private String name;
private int p_number;
private double price;
private String add_time;
public Product(int p_id, String name, int p_number, double price, String add_time) {
super();
this.p_id = p_id;
this.name = name;
this.p_number = p_number;
this.price = price;
this.add_time = add_time;
}public Product() {
super();
}
public int getP_id() {
return p_id; }
public void setP_id(int p_id) {
this.p_id = p_id; }public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getP_number() {
return p_number; }
public void setP_number(int p_number) { this.p_number = p_number; }
public double getPrice() { return price; }
public void setPrice(double price) { this.price = price; }
public String getAdd_time() { return add_time;
}
public void setAdd_time(String add_time) { this.add_time = add_time; }
@Override
public String toString() {
return "Product [p_id=" + p_id + ", name=" + name + ", p_number=" + p_number + ", price=" + price + ", add_time=" + add_time + "]"; } }
단일 맵 관 계 를 만 드 는 sql.xml:produt.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">
<!-- sql namespace: , sql 。 mapper --> <mapper namespace="test">
<!--select: id: , ,java 。
parameterType:
resultType: , model #{value}: , 。 --> <select id="findById" parameterType="java.lang.Integer" resultType="com.woniuxy.model.Product">
SELECT * FROM t_product WHERE p_id = #{value}
</select>
</mapper>
자바 코드 를 작성 하여 sql 문 구 를 테스트 하고 결 과 를 얻 습 니 다.
/**** <p>Title: MybatisDemo1</p> *
<p>Description: demo</p> *
@author Alon
* @date 2020 9 27 7:05:32
* * @version 1.0 */
* public class MybatisDemo1 {
* public static void main(String[] args) throws IOException {
* new MybatisDemo1().queryById(); }
* public void queryById() throws IOException {
* //1、 SqlMapConfig.xml String path = "SqlMapConfig.xml";
* InputStream config = Resources.getResourceAsStream(path);
// , SqlMapConfig.xml SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(config);
// SqlSession sqlSession = factory.openSession(); /** : sql , .id * : #{value} 。 */
Object obj = sqlSession.selectOne("test.findById", 1); System.out.println(obj); } }
퍼 지 조회:여러 결과 집합 을 조회 합 니 다.
<!-- xml , , SqlMapConfig.xml --> <select id="queryByName" parameterType="java.lang.String" resultType="com.woniuxy.model.Product"> SELECT * FROM t_product WHERE name like "%${value}%" </select> public void queryByName() throws Exception
{
String path = "SqlMapConfig.xml"; // InputStream config = Resources.getResourceAsStream(path); // SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(config); // SqlSession sqlSession = factory.openSession(); /** , selectList */ List<Object> list = sqlSession.selectList("test.queryByName", " "); // System.out.println(list);
}
새로 추 가 된 문장
<!-- parameterType: , 。 -->
<insert id="insertProduct" parameterType="com.woniuxy.model.Product">
INSERT INTO t_product(name,p_number,price) value(#{name},#{p_number},# {price});
</insert>
/**
**<p>Title: insert</p>
*<p>Description: </p>
* @throws Exception
* */ public void insert() throws Exception{ String path = "SqlMapConfig.xml";
* //
* InputStream config = Resources.getResourceAsStream(path); //
* SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(config);
* //
* SqlSession sqlSession = factory.openSession();
* Product prod = new Product();
* prod.setName(" ");
* prod.setP_number(10);
* prod.setPrice(3.0);
* int row = sqlSession.insert("test.insertProduct", prod); System.out.println(row); sqlSession.commit(); sqlSession.close(); }
mapper 대리 방식 으로 설명 증가,삭제,수정,검사(중점)STEP 1:대응 하 는 Mapper 인 터 페 이 스 를 만 들 고 이전 dao 인터페이스 와 일치 합 니 다.
단계 2:대응 하 는 xxmapper.xml 프로필 을 작성 합 니 다.요구 가 있다
1)mapper 탭 에 있 는 namespace:대응 하 는 Mapper 인터페이스의 전체 경로 이름 으로 써 야 합 니 다.
2)sql 구문 의 id:인터페이스 에 대응 하 는 방법의 이름과 일치 해 야 합 니 다.
3)sql 구문 에 있 는 parameterType:인터페이스 에 있 는 방법의 형식 매개 변수 데이터 형식 과 일치 해 야 합 니 다.
4)sql 구문 에 있 는 resultType:인터페이스 에 있 는 방법의 반환 값 데이터 형식 과 일치 해 야 합 니 다.
STEP 3:작 성 된**mapper.xml 파일 을 SqlMapConfig.xml 파일 에 불 러 옵 니 다.
STEP 4:구현 클래스 를 작성 하고 여기 서 직접 테스트 합 니 다.
별명 과 mapper 맵 상세 설명
별명 설정
my batis 설정 파일 에 서 는 별명 이 계속 존재 합 니 다.실제로 프레임 워 크 에 기본 별명 이 존재 합 니 다.예 를 들 면
java.lang.String 에 대응 하 는 별명:String,java.lang.Integer 에 대응 하 는 별명:int
개발 에 있어 서 일반 mapper.xml 설정 파일 의 parameterType 과 resultType 에 대응 하 는 이름 을 적어 야 합 니 다.
model 의 전체 경 로 는 여러 번 중복 되 어 있 으 며,이 경로 에 별명 을 지 을 수 있 습 니 다.별명 으로 바 꾸 는 게 복잡 해 요.
전체 경로 이름
스 캔 패키지 형식 으로 설정
사용자 정의 POJO 클래스(중점)
사용자 정의 POJO 클래스 는 일반적으로 고급 조 회 를 말 합 니 다.원 하 는 데이터 와 들 어 오 는 조건 이 표 한 장 이 아 닌 표를 통 해 만 든 출혈 을 말 합 니 다.
모델 모델 은 들 어 오 는 매개 변수 에 대한 수 요 를 만족 시 킬 수 없습니다.이 럴 때 사용자 정의 POJO 류 를 사용 해 야 합 니 다.
출혈 모델 이 입력 매개 변 수 를 조회 하 는 요 구 를 만족 시 킬 수 없 기 때문에 확장 하여 UserCustom 류 를 만 듭 니 다.
면 에는 user 대상 성명 과 userInfo 대상 성명 이 포함 되 어 있 습 니 다.
이상 은 my batis 가 mapper 대리 모델 을 실현 하 는 방식 에 대한 상세 한 내용 입 니 다.my batis mapper 대리 모델 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL/마이바티스 | 동적 쿼리 사용A라는 서비스에 해당하는 테이블을 조인하고 조회하는 데 사용됩니다. 나중에 공통화를 위해 B 및 C 서비스도 추가됩니다. A, B, C 서비스는 모두 단일 쿼리에서 작동할 수 있도록 공통화되어야 합니다. 테이블에 각...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.