4月14日
21267 ワード
きょう習った
MyBatis XMLの使用
package com.myapp.mybatis.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.myapp.mybatis.model.Product;
@Mapper
public interface ProductMapper {
// 구현이 안된 추상메소드들을 연결된 mapper폴더의 ProductMapper.xml에서 작성한다.
Product selectProductById(Long id); // id로 제품 하나 검색
List<Product> selectAllProducts(); // 모든 제품 검색
void insertProduct(Product product); // 제품 생성
void updateProduct(Product product); // 제품 수정
void deleteProductById(Long id); // 제품 삭제
}
parameterTypeが入力データを受信するオブジェクト
<?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">
<!-- com.myapp.mybatis.mapper 패키지 안의 ProductMapper.java를 여기서 입력하겠다는 설정 -->
<mapper namespace="com.myapp.mybatis.mapper.ProductMapper">
<select id="selectProductById" resultType="Product"> <!-- application.properties에 설정을 하지 않았다면 resultType="com.myapp.mybatis.model.Product" 라고 적었야함 -->
SELECT prod_id
,prod_name
,prod_price
FROM products
WHERE prod_id = #{prodId}
</select>
<select id="selectAllProducts" resultType="Product">
SELECT prod_id
,prod_name
,prod_price
FROM products
</select>
<insert id="insertProduct" parameterType="Product">
INSERT INTO products (prod_name, prod_price)
VALUES (#{prodName}, #{prodPrice})
</insert>
<update id="updateProduct" parameterType="Product">
UPDATE products
SET prod_name=#{prodName}, prod_price=#{prodPrice}
WHERE prod_id=#{prodId}
</update>
<delete id="deleteProductById">
DELETE FROM products
WHERE prod_id=#{prodId}
</delete>
</mapper>
ビューを必要としないRestControlであるため、Postmanテストpackage com.myapp.mybatis.controller;
import java.util.List;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.myapp.mybatis.mapper.ProductMapper;
import com.myapp.mybatis.model.Product;
@RestController // view 없이 바로 return
@RequestMapping("/products")
public class ProductController {
private ProductMapper productMapper;
// 생성자 주입(객체를 생성자 주입으로 입력시 @Autowired 필요없음)
public ProductController(ProductMapper productMapper) {
this.productMapper = productMapper;
}
@GetMapping("/{id}")
public Product getProduct(@PathVariable("id") Long prodId) {
// mybatis는 repository 대신 매퍼를 만듬
Product product = productMapper.selectProductById(prodId);
return product;
}
@GetMapping
public List<Product> getproductList() {
List<Product> products = productMapper.selectAllProducts();
return products;
}
@PostMapping // Parameter로 prodName, prodPrice가 들어와야 한다.
public void createProduct(@RequestParam("prodName") String prodName, @RequestParam("prodPrice") int prodPrice) {
productMapper.insertProduct(new Product(prodName, prodPrice));
}
@PutMapping("/{id}")
public void updateProduct(@PathVariable("id") Long prodId ,@RequestParam("prodName") String prodName, @RequestParam("prodPrice") int prodPrice) {
productMapper.updateProduct(new Product(prodId, prodName, prodPrice));
}
@DeleteMapping("/{id}")
public void deleteProduct(@PathVariable("id") Long prodId) {
productMapper.deleteProductById(prodId);
}
}
Reference
この問題について(4月14日), 我々は、より多くの情報をここで見つけました https://velog.io/@tutu10000/4월-14일テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol