AXBoot소개 · ax-boot-document
api.axboot.com
개발자도구-ModelExtractor - CompanyM - code에서 interface/XML 부문을 활용.
1. CompanyController.java에서 mybatis 조회기능을 추가해야함.
앞서 querydsl 기능에서 조회부분을 가져와서 약간의 변경을 해줌.
*정의가 안된 함수나 클래스는 alt+Enter 단축키로 생성한다.
control+alter+b = 정의된 클래스 파일로 이동(인텔리제이 기준)
// value= "/mybatis"로 변경
@RequestMapping(value = "/myBatis", method = RequestMethod.GET, produces = APPLICATION_JSON)
@ApiImplicitParams({
@ApiImplicitParam(name = "company", value = "회사명", dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "ceo", value = "대표자", dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "bizno", value = "사업자번호", dataType = "String", paramType = "query")
})
//메서드명 변경
//mybatis,jap 구분하기 위해 쿼리문 표현을 그대로 가져다 쓰는게 좋다.
public Responses.ListResponse list3(RequestParams<Company> requestParams) {
//getByQueryDsl -> selectBy:단순 조회가 아닌 where조건을 가미
// service단에 생성을 해야함.
List<Company> list = companyService.selectBy(requestParams); //companyservice가있기때문에 자동으로 생성
return Responses.ListResponse.of(list);
}
2. company패키지에 CompanyMapper 인터페이스를 생성, MyBatisMapper를 상속받는다.
여기서 컨트롤러에서 정의되지 않았던 selectBy개체를 생성.
// mybatismapper 상속 추가
public interface CompanyMapper extends MyBatisMapper {
List<Company> selectBy(String company);
// resource폴더에 edu.axboot.domain.company 경로를 만들고
// company에 CompanyMapper.xml 추가.
}
3. CompanyService.java에 selectBy함수를 정의 해줌
//selectBy new메서드 생성
public List<Company> selectBy(RequestParams<Company> requestParams) {
// 받을 파라미터값 추가
String company = requestParams.getString("company", "");
String ceo = requestParams.getString("ceo", "");
String bizno = requestParams.getString("bizno", "");
//copanyMapper에 selectBy를 생성.
List<Company> companyList = this.companyMapper.selectBy(company); //회사명으로 검색해서 데이터를 가져옴
return companyList;
}
4. 맵퍼 데이터를 바로 적용 시키기 위해 resource 디렉토리를 만들고 mapper.xml 파일에 조회기능 쿼리를 소스코드를 만듦.
(resource-edu-axboot-domain-company-companyMapper.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="edu.axboot.domain.companyM.CompanyMapper">
<!-- 인터페이스 속성 명칭과 id 명칭이 반드시 동일해야함.
resultType은 자동적으로 이름이 생성된 것으로 이름 변경.
List타입이 company/ namespace 는 경로명과 똑같이-->
<select id="selecyBy" resultType="company" parameterType="String" statementType="PREPARED">
SELECT
ID AS id,
COMPANY_NM AS companyNm,
CEO AS ceo,
BIZNO AS bizno,
TEL AS tel,
ZIP AS zip,
ADDRESS AS address,
ADDRESS_DETAIL AS addressDetail,
EMAIL AS email,
REMARK AS remark,
USE_YN AS useYn
FROM
COMPANY_M
</select>
</mapper>
* Namespace는 전 system에서 유일해야한다.
그런데 막상 조회를 해보니 parameterType="String"으로 데이터를 불러올 수 없었다.
그래서 parameterType을 company객체로 변경을 하였다.
insert/update/delete 기능 추가
*리팩터 : shift+F6 키 동시에 변수 이름 바꾸기.
1. CompanyController.java
@RequestMapping(value = "/MyBatis", method = {RequestMethod.PUT}, produces = APPLICATION_JSON)
public ApiResponse save3(@RequestBody List<Company> request) {
companyService.saveByMyBatis(request);
return ok();
}
2. CompanyService.java
saveByMyBatis에 insert/update/delete 조건추가
public void saveByMyBatis(List<Company> request) {
for (Company company: request) {
if (company.isCreated()) {
this.companyMapper.insert(company);
} else if (company.isModified()) {
this.companyMapper.update(company);
} else if (company.isDeleted()) {
this.companyMapper.delete(company);
}
}
}
3. Mapper에 생성
// mybatismapper 상속 추가
public interface CompanyMapper extends MyBatisMapper {
// List<Company> selectBy(String company);
List<Company> selectBy(Company company);
void insert(Company company);
void update(Company company);
void delete(Company company);
// resource폴더에 edu.axboot.domain.company 경로를 만들고
// company에 CompanyMapper.xml 추가.
}
4. CompanyMapper.xml에 쿼리문 추가
<insert id="insert" parameterType="company" statementType="PREPARED">
INSERT INTO COMPANY_M (
COMPANY_NM,
CEO,
BIZNO,
TEL,
ZIP,
ADDRESS,
ADDRESS_DETAIL,
EMAIL,
REMARK,
USE_YN
) VALUES (
#{companyNm},
#{ceo},
#{bizno},
#{tel},
#{zip},
#{address},
#{addressDetail},
#{email},
#{remark},
#{useYn}
)
</insert>
<update id="update" parameterType="company" statementType="PREPARED">
UPDATE COMPANY_M
SET
COMPANY_NM = #{companyNm},
CEO = #{ceo},
BIZNO = #{bizno},
TEL = #{tel},
ZIP = #{zip},
ADDRESS = #{address},
ADDRESS_DETAIL = #{addressDetail},
EMAIL = #{email},
REMARK = #{remark},
USE_YN = #{useYn}
WHERE
ID = #{id}
</update>
<delete id="delete" parameterType="company" statementType="PREPARED">
DELETE FROM
COMPANY_M
WHERE
ID = #{id}
</delete>
'Programming👩🏻💻 > AxBoot' 카테고리의 다른 글
| Banner / Logging / Excel download (0) | 2021.04.30 |
|---|---|
| jsfiddle (0) | 2021.04.23 |
| *중요 디버깅, 단위테스트 (0) | 2021.04.22 |
| QueryDSL (0) | 2021.04.19 |
| Mac 맥) Maven 설치 및 환경 변수 설정 (0) | 2021.04.19 |