.
๋ ๋ฒ์งธ ๋ฐฉ๋ฒ
์ฅ๋ฌธ์ sql๋ฌธ์ ์์ฑํ ๋๋ xml๋ก๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
DROP TABLE IF EXISTS Products;
CREATE TABLE Products
(
prod_id INT PRIMARY KEY AUTO_INCREMENT,
prod_name VARCHAR(255) NOT NULL,
prod_price INT NOT NULL
);
INSERT INTO Products (prod_name, prod_price) values ('๋ฒ ๋ฒ ์ฒ ๋ฌผํฐ์', 2700);
INSERT INTO Products (prod_name, prod_price) values ('์ฌ๋ฆ ํ ํผ', 35180);
INSERT INTO Products (prod_name, prod_price) values ('ํ์ดํฌ ์ญ์ค', 860);
INSERT INTO Products (prod_name, prod_price) values ('์ฐ์ฐ', 2900);


package com.myapp.mybatis.model;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor //์ ์ฒด ์์ฑ์
@NoArgsConstructor //๊ธฐ๋ณธ ์์ฑ์
public class Product {
private Long prodId;
private String prodName;
private int prodPrice;
}

db์์๋ _๋ฐ๋
prod_id

# MyBatis
# mapper.xml ์์น ์ง์
mybatis.mapper-locations= mapper/*.xml
# model ํ๋กํผํฐ camel case ์ค์
mybatis.configuration.map-underscore-to-camel-case=true
# ํจํค์ง result tpye ์ ์๋ตํ ์ ์๋๋ก alias ์ค์
mybatis.type-aliases-package=com.myapp.mybatis.model
# mapper ๋ก๊ทธ๋ ๋ฒจ ์ค์ (trace -> ์์ธํ ๋ก๊ทธ)
logging.level.com.myapp.mybatis.mapper=TRACE
result type ์ mapper.xml์์ ์์ฑํ ๋ ์๋์ ๊ฐ์ result type์ ๋งํ๋ค.



์๋ฌ๋๋ ์ด์ ๋ 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๋ฌธ์ 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 {
Product selectProductById(Long id);
List<Product> selectAllProducts();
void insertProduct(Product product);
void updateProduct(Product product);
void deleteProductById(Long id);
}
ProductMapper.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.myapp.mybatis.mapper.ProductMapper">
<select id="selectProductById" resultType="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" parameterType="Long">
DELETE FROM products
WHERE prod_id=#{prodId}
</delete>
</mapper>
ProductController
package com.myapp.mybatis.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
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 // ํ๋ฉด์์ด ๋ฐ์ดํฐ๋ง ์ ๋ฌ
@RequestMapping("/products")
public class ProductController {
@Autowired
private ProductMapper productMapper;
@GetMapping("/{id}")
public Product getUser(@PathVariable("id") Long id) {
Product product = productMapper.selectProductById(id);
return product;
}
@GetMapping
public List<Product> getProductList() {
List<Product> productList = productMapper.selectAllProducts();
return productList;
}
@PostMapping
public void createProduct(
@RequestParam("name") String prodName,
@RequestParam("price") int prodPrice) {
Product product = new Product();
product.setProdName(prodName);
product.setProdPrice(prodPrice);
productMapper.insertProduct(product);
}
@PutMapping("/{id}")
public void editProduct(
@PathVariable("id") Long prodId,
@RequestParam("name") String prodName,
@RequestParam("price") int prodPrice) {
Product product = new Product(prodId,prodName,prodPrice);
productMapper.updateProduct(product);
}
@DeleteMapping("/{id}")
public void deleteProduct(@PathVariable("id") Long id) {
productMapper.deleteProductById(id);
}
}
ํ ์คํธํ๊ธฐ
์ ํ ๊ฒ์ํ๊ธฐ


๋ชจ๋ ์ ํ ๊ฒ์ํ๊ธฐ


์ ํ ์ ๋ ฅํ๊ธฐ
http://localhost:8080/products?name=๋ ธํธ&price=700000


DBํ์ธ

์ ํ ์์ ํ๊ธฐ
http://localhost:8080/products/5?name=๋ ธํธ๋ถ&price=800000



์ ํ ์ญ์ ํ๊ธฐ




'BACKEND > SpringBoot' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ์คํ๋ง๋ถํธ์์ JSP ์ค์ (0) | 2023.11.14 |
|---|---|
| ์คํ๋ง ๋ถํธ - MyBatis ๋ฐ postman ์ฌ์ฉ (0) | 2023.11.14 |
| ์คํ๋ง๋ถํธ ๊ฒ์ํ ๋ง๋ค๊ธฐ ๊ฐ์ (0) | 2023.11.13 |
| h2 -> MySQL๋ก DB๋ณ๊ฒฝํ๊ธฐ (1) | 2023.11.13 |
| ์ง๋ฌธ/๋ต๋ณ ์ถ์ฒ ๊ธฐ๋ฅ (0) | 2023.11.13 |