Spring TIL - Service, DAO, Mybatis ์„ค์ •ํŒŒ์ผ

Jieunยท2023๋…„ 4์›” 24์ผ
0

๐Ÿ“ service, dao ์ƒ์„ฑ, Mybatis ์„ค์น˜ ํ›„ mapper ๊ณต๋ถ€
#230424

๐Ÿ’ป ์ž‘์—…ํŒŒ์ผ

[src/main/java] - [edu.kh.comm.member.service] - MemberService.java(์ธํ„ฐํŽ˜์ด์Šค)
[src/main/java] - [edu.kh.comm.member.service] - MemberServiceImpl.java(ํด๋ž˜์Šค)
[src/main/java] - [edu.kh.comm.member.dao] - MemberDAO.java
[src/main/java] - [edu.kh.comm.member.controller] - MemberController.java

  1. ์„œ๋น„์Šค 2๊ฐœ (์ธํ„ฐํŽ˜์ด์Šคver, ํด๋ž˜์Šค ver) ๋งŒ๋“ค๊ธฐ

  2. MyBatis ์„ค์ •ํ•ด์ฃผ๊ธฐ (์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ• ํฌ์ŠคํŒ… ์ด๋™)

  3. dao, mapper ์ด์šฉํ•ด์„œ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ์ด์šฉ


์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์ž์ฒด๋งŒ์œผ๋กœ ๊ฐ์ฒด ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉ ๋ถˆ๊ฐ€
์ƒ์†๋ฐ›์•„ ์“ธ MEMBERSERVICE IMPL ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ฌ

์Šคํ”„๋ง์—์„  ์‹ค๋ฌด๋‚˜๊ฐ€๋ฉด DAO๋‚˜ CONTROLLER๋Š” ํŒ€์—์„œ ์ •ํ•œ๋Œ€๋กœ ํ•จ
service๋Š” ๋Œ€๋ถ€๋ถ„ ์–ด๋””๋ฅผ ๊ฐ€๋“  ๋‘๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ ์„œ ์”€

โœ”๏ธ Service Interface๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  1. ํ”„๋กœ์ ํŠธ์— ๊ทœ์น™์„ฑ์„ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ

  2. Spring AOP ๋ฅผ ์œ„ํ•ด์„œ ํ•„์š”

  3. ํด๋ž˜์Šค๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ์•ฝํ™”(๋А์Šจํ•˜๊ฒŒ) ์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ -> ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ โญโญ
    (๊ฒฐํ•ฉ๋„๋Š” ํด๋ž˜์Šค์™€ ํด๋ž˜์Šค๊ฐ„์˜ ๊ด€๊ณ„, ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€
    ํด๋ž˜์Šค๊ฐ„์˜ ์—ฐ๊ฒฐ์ด ๋งŽ์œผ๋ฉด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํ•˜๊ธฐ ํž˜๋“ฌ๐Ÿ˜ญ๐Ÿ˜ญ)


Spring AOP : ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ํŠธ๋žœ์žญ์…˜, ๋กœ๊น…, ๋ณด์•ˆ ๋“ฑ ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ, ์—ฌ๋Ÿฌ ๊ณ„์ธต์—์„œ ๊ณตํ†ต์œผ๋กœ ํ•„์š”๋กœ ํ•˜๋Š”
๊ธฐ๋Šฅ์˜ ๊ฒฝ์šฐ ํ•ด๋‹น ๊ธฐ๋Šฅ๋“ค์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌ!

์˜ˆ์‹œ) classA์˜ 2๋ฒˆ๊ณผ b์˜ 2๋ฒˆ๊ณผ ๊ฐ™๋‹ค๋ฉด ๊ฐ™์ด ์ฝ”๋“œ ์ˆ˜์ •ํ•ด์ค˜์•ผํ•จ.
๊ฐ™์€ ์ฝ”๋“œ์ธ๋ฐ ๊ฐ์ž ํด๋ž˜์Šค์— ๋‚˜๋ˆ ์ ธ ์žˆ์œผ๋ฉด ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์›€ ๐Ÿ‘‰ AOP์˜ ํฉ์–ด์ง„ ๊ด€์‹ฌ์‚ฌ
๊ทธ๋ž˜์„œ ํฉ์–ด์ง„๊ด€์‹ฌ์‚ฌ(2๋ฒˆ,3๋ฒˆ ๋ฉ”์†Œ๋“œ)๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด์„œ ์‚ฌ์šฉํ•œ๋‹ค ๐Ÿ‘‰ ๋ชจ๋“ˆํ™”๋ฅผ ํ•œ๋‹ค

[AOP ํฉ์–ด์ง„ ๊ด€์‹ฌ์‚ฌ] : ์†Œ์Šค์ฝ”๋“œ ์ƒ์—์„œ ๊ณ„์† ๋ฐ˜๋ณตํ•ด์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ถ€๋ถ„๋“ค
โžก๏ธ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ ๋‹ค



<< MemberController ํด๋ž˜์Šค >>

public class Member Controller {

	private Logger logger = LoggerFactory.getLogger(MemberController.class);
    
	// private MemberSErvice service = new MemberServieImpl();
    @Autowired
	private MemberService service ....
    
--------------------------------------------------------------------------------

<< ServiceImpl ํด๋ž˜์Šค >>
@Service
public class MemberServiceImpl implements MemberService {

IOC (์ œ์–ด์˜ ์—ญ์ „)

  • ์Šคํ”„๋ง์˜ ๊ฒฝ์šฐ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ ์•„๋‹ˆ๋ฉด new์—ฐ์‚ฐ์ž ํ†ตํ•ด์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๊ฐ์ฒด์ƒ์„ฑ ์•ˆํ•จ

  • ์ปจํŠธ๋กค์˜ ์ œ์–ด๊ถŒ์ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹ˆ๋ผ ํ”„๋ ˆ์ž„์›Œํฌ์— ์žˆ๋‹ค๋Š” ๋œป์œผ๋กœ
    ๊ฐ์ฒด์˜ ์ƒ์„ฑ๋ถ€ํ„ฐ ๋ชจ๋“  ์ƒ๋ช…์ฃผ๊ธฐ์˜ ๊ด€๋ฆฌ๊นŒ์ง€ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ฃผ๋„ํ•˜๊ณ  ์žˆ๋‹ค.


@Service (Service bean๋“ฑ๋ก ์–ด๋…ธํ…Œ์ด์…˜)

๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง(๋ฐ์ดํ„ฐ๊ฐ€๊ณต, db์—ฐ๊ฒฐ)์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํด๋ž˜์Šค์ž„์„ ๋ช…์‹œ + bean ๋“ฑ๋ก

@Repository (DAO bean๋“ฑ๋ก ์–ด๋…ธํ…Œ์ด์…˜)

์˜์†์„ฑ์„ ๊ฐ€์ง€๋Š” DB/ํŒŒ์ผ๊ณผ ์—ฐ๊ฒฐ๋˜๋Š” ํด๋ž˜์Šค์ž„์„ ๋ช…์‹œ + bean ๋“ฑ๋ก

@Autowired (bean๋“ฑ๋ก ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜)

bean์œผ๋กœ ๋“ฑ๋ก๋œ ๊ฐ์ฒด ์ค‘ ํƒ€์ž…์ด ๊ฐ™๊ฑฐ๋‚˜, ์ƒ์†๊ด€๊ณ„์ธ bean์„ ์ž๋™์œผ๋กœ ์ฃผ์ž…(์—ฐ๊ฒฐ)ํ•ด์คŒ.
๐Ÿ‘‰DI (์˜์กด์„ฑ ์ฃผ์ž…)
์ด๊ฑฐ ์“ฐ๋ ค๋ฉด Bean์ด ๋จผ์ € ์„ ํ–‰๋˜์–ด์•ผํ•จ. ๊ทธ๋ž˜์•ผ ์ž‘๋™ํ•˜๋‹ˆ๊นŒ...


โœ”๏ธ ์ธํ„ฐํŽ˜์ด์Šค ํŠน์ง•

๋ชจ๋“  ๋ฉ”์„œ๋“œ๊ฐ€ ์ถ”์ƒ ๋ฉ”์„œ๋“œ (๋ฌต์‹œ์ ์œผ๋กœ public abstract) ์ด๋‹ค
๋ชจ๋“  ํ•„๋“œ๋Š” ์ƒ์ˆ˜ (๋ฌต์‹œ์ ์œผ๋กœ public static final) ์ด๋‹ค

<< MemberController ํด๋ž˜์Šค >>
  
@PostMapping("/login")
public String login(@ModelAttribute Member inputMember) {

	logger.info("๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ์ˆ˜ํ–‰๋จ");
	Member loginMember = service.login(inputMember);
  
  	return "redirect:/";
}  
---------------------------------------------------------------------------

  << MemberService ์ธํ„ฐํŽ˜์ด์Šค >> 
  
public interface MemberService {
    public abstract Member login(Member inputMember);
}
  
-------------------------------------------------------------------------- 
  
<< MemberServiceImpl ํด๋ž˜์Šค >>
  
@Service  
public class MemberServiceImpl implements MemberService {
  
// memberSErviceImpl์—์„œ ๋นจ๊ฐ„์ค„ ๋œจ๋ฉด add unimplement ํด๋ฆญํ•ด์„œ
// ์žฌ์ •์˜(์˜ค๋ฒ„๋ผ์ด๋”ฉ)ํ•ด์ฃผ๊ธฐ
 
  @Autowired
  private MemberDAO dao;   
  
  // ๋กœ๊ทธ์ธ ์„œ๋น„์Šค ๊ตฌํ˜„
  @Override
  public Member login(Member inputMember) {
		
  	Member loginMember = dao.login(inputMember);
	
  	return loginMember;
}
--------------------------------------------------------------------------  

<< MemberDAO ํด๋ž˜์Šค >>
@ Repository   
public class MemberDAO {   ....

โœ”๏ธ Connection์„ Service์—์„œ ์–ป์–ด์™”๋˜ ์ด์œ 

  • Service์˜ ๋ฉ”์„œ๋“œ ํ•˜๋‚˜๋Š” ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์—…๋ฌด ๋‹จ์œ„
  • ํ•ด๋‹น ์—…๋ฌด๊ฐ€ ๋๋‚œ ํ›„ ํŠธ๋žœ์žญ์…˜์„ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ
    ์–ด์ฉ” ์ˆ˜ ์—†์ด Connection์„ Service์—์„œ ์–ป์–ด์˜ฌ ์ˆ˜ ๋ฐ–์— ์—†์—ˆ๋‹ค.

โžก๏ธ Connection์„ ์–ป์–ด์˜ค๊ฑฐ๋‚˜ / ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ๊ตฌ๋ฌธ์„ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„
Spring์—์„œ ์ œ์–ด๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Service ๊ตฌ๋ฌธ์ด ๊ฐ„๋‹จํ•ด์ง„๋‹ค.

DAO๋Š” DB๋ž‘ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ Connection์ด ๊ณตํ†ต์ ์œผ๋กœ ํ•„์š”ํ•˜๋‹ค!
โžก๏ธ ๊ธฐ์กด์—” ํ•„๋“œ์— ์„ ์–ธํ•ด์„œ ์”€ / ์ด์ œ๋Š” Mybatis ์ด์šฉ!

Mybatis (์˜์†์„ฑ ํ”„๋ ˆ์ž„์›Œํฌ)๋ฅผ ์ด์šฉํ•˜๋ ค๋ฉด Connection์„ ์ด์šฉํ•ด ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด
SqlSessionTemplate์„ ์‚ฌ์šฉ

mybatis ์„ค์น˜ ํ›„ sqlSessionTemplate ์˜ค๋ฅ˜ ํ•ด์ œ ํ™•์ธ ํ›„ Autowired์„ ํ†ตํ•ด
root-context.xml์— ์ƒ์„ฑ๋œ sqlSessionTemplate bean๊ฐ์ฒด ์—ฐ๊ฒฐํ•ด์„œ ์“ฐ๋Š”๊ฑฐ์ž„

public class MemberDAO {
  @Autowired // root-context.xml ์—์„œ ์ƒ์„ฑ๋œ SqlSessionTemplate bean์„ ์˜์กด์„ฑ ์ฃผ์ž…(DI)
	private SqlSessionTemplate sqlSession;
    // SqlSessionTemplate importํ•˜๋ ค๋ฉด mybatis ์•ˆ์— ์žˆ๋Š”๊ฑฐ๋ผ์„œ ๊ฑฐ๊ธฐ์„œ ์„ค์ •ํ•ด์ค˜์•ผํ•จ
	
	private Logger logger = LoggerFactory.getLogger(MemberDAO.class);
	
	public Member login(Member inputMember) {  ....

๐Ÿ“Œ MyBatis ํ™˜๊ฒฝ์„ค์ • ํ•ด์ฃผ๊ธฐ!

Mybatis๋ž€?

๋ฐ์ดํ„ฐ์˜ ์ž…๋ ฅ, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ(CRUD)๋ฅผ ๋ณด๋‹ค ํŽธํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด
xml๋กœ ๊ตฌ์กฐํ™”ํ•œ Mapper ์„ค์ • ํŒŒ์ผ์„ ํ†ตํ•ด์„œ JDBC๋ฅผ ๊ตฌํ˜„ํ•œ ์˜์†์„ฑ ํ”„๋ ˆ์ž„์›Œํฌ

Mybatis ํ๋ฆ„

์ „์ฒดํ”„๋กœ์ ํŠธ ํ๋ฆ„์ด ์•„๋‹ˆ๋ผ dao์—๋‹ค๊ฐ€ Mybatis ์„ค์ •ํŒŒ์ผ ์–น์–ด์„œ ์“ธ๊ฑฐ์ž„!


โœ”๏ธ mybatis-config.xml ์•ˆ์— ์„ค์ •

โ—๋ฌด์กฐ๊ฑด ์•„๋ž˜ ์ˆœ์„œ๋Œ€๋กœ ์ ์–ด์ฃผ๊ธฐ. ํ‹€๋ฆฌ๋ฉด ์˜ค๋ฅ˜๋‚˜๊ฑฐ๋‚˜ ์‹คํ–‰์•ˆ๋จ

  
<!-- SqlSessionTemplate ๊ด€๋ จ ์„ค์ • -->  
<settings>
	
	<!-- insert / update ์ง„ํ–‰ ์‹œ null์ด ํฌํ•จ๋˜์–ด์žˆ๋Š” ๊ฒฝ์šฐ
	Mybatis๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ error๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€๋งŒ
	ํ•ด๋‹น ๊ตฌ๋ฌธ์ด ์ž‘์„ฑ๋˜๋ฉด ์ง€์ •๋œ value๋กœ ๊ฐ’์„ insert/update ์‹œํ‚จ๋‹ค.
	** ์†Œ๋ฌธ์ž null์€ ์˜ค๋ฅ˜ ๋ฐœ์ƒ!! ๋ฌด์กฐ๊ฑด ๋Œ€๋ฌธ์ž NULL  (๋งˆ์ด๋ฐ”ํ‹ฐ์Šค์—์„œ ์˜ค๋ฅ˜๋œธ) ** 
	-->
	<setting name="jdbcTypeForNull" value="NULL" />
	
</settings>
  

<!-- ๋ณ„์นญ ์ž‘์„ฑ ๋ถ€๋ถ„ -->
<!-- VOํด๋ž˜์Šค์˜ ํŒจํ‚ค์ง€๋ช… + ํด๋ž˜์Šค๋ช… ๋ชจ๋‘ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋ถˆํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์งง์€ ๋ณ„์นญ ๋ถ€์—ฌ -->
<typeAliases></typeAliases>
  

<!-- SQL์ด ์ž‘์„ฑ๋˜๋Š” mapper ํŒŒ์ผ ์œ„์น˜๋ฅผ ๋“ฑ๋ก -->  
<mappers></mappers>

โœ”๏ธ root-context.xml ํŒŒ์ผ

  • web.xml์—์„œ ๊ฐ€์žฅ ๋จผ์ € ์ฝ์–ด ๋“ค์ด๋Š” ์„ค์ • ํŒŒ์ผ.
  • ํ”„๋กœ์ ํŠธ ์ „๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ž์›์„ ์ƒ์„ฑ(bean ๋“ฑ๋ก)ํ•˜๊ณ  ์„ค์ •ํ•˜๋Š” ํŒŒ์ผ
  • DB ์—ฐ๊ฒฐ ๊ด€๋ จ ์ •๋ณด, ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ, ํŒŒ์ผ ์—…๋กœ๋“œ ๋“ฑ์„ ์ž‘์„ฑ

SqlSession : sql๊ตฌ๋ฌธ์„ DB์— ์ „๋‹ฌ, ์‹คํ–‰ํ•˜๋Š” ๊ฐ์ฒด
SqlSessionFactory : SqlSession์„ ๋งŒ๋“œ๋Š” ๊ฐ์ฒด
sqlSessionFactoryBean : mybatis ์„ค์ • ํŒŒ์ผ(mybatis-config.xml)๊ณผ
Connection Pool ์ •๋ณด๋ฅผ ์ด์šฉํ•˜์—ฌ SqlSessionFactory๋ฅผ ๋งŒ๋“œ๋Š” ๊ฐ์ฒด
sqlSessionTemplate : SqlSession ๊ฐ์ฒด์— ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ ์—ญํ• ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๋Š” ๊ฐ์ฒด -->


โœ”๏ธ mapper.xml ํŒŒ์ผ

1. ์ˆ˜ํ–‰ํ•˜๋ ค๋Š” SQL์— ๋”ฐ๋ผ์„œ ํƒœ๊ทธ๊ฐ€ ๊ตฌ๋ถ„๋จ (์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์†์„ฑ๋„ ๋‹ค๋ฆ„)

 	<select></select>
	<insert></insert>
	<update></update>
	<delete></delete>

2. ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค์—์Šค #{}, ${} ์ฐจ์ด์  (์ค‘์š”) โญโญโญ

  • #{๋ณ€์ˆ˜๋ช…} : SQL์— ๊ฐ’์ด ํฌํ•จ๋  ๋•Œ ์–‘์ชฝ์— '' ์ถ”๊ฐ€๋จ (pstmt) ํ”Œ๋ ˆ์ด์Šคํ™€๋” ์‚ฌ์šฉํ•  ๋•Œ
    โžก๏ธ ๋ฆฌํ„ฐ๋Ÿด ์‚ฌ์šฉ (๊ฐ’ ์ž์ฒด๋กœ ์‚ฌ์šฉ)

  • ${๋ณ€์ˆ˜๋ช…} : SQL์— ๊ฐ’์ด ํฌํ•จ๋  ๋•Œ ์–‘์ชฝ์— '' ์ถ”๊ฐ€๋˜์ง€ ์•Š์Œ (stmt)
    โžก๏ธ SQL ๊ตฌ๋ฌธ ์กฐํ•ฉ์‹œ ์‚ฌ์šฉ (condition)

์กฐํšŒ๋˜๋Š” ํ–‰์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ dao์—์„œ ์ž‘์„ฑ๋˜๋Š” ๊ตฌ๋ฌธ์ด ๋‹ฌ๋ผ์ง!!
๊ทธ๋ž˜์„œ 1ํ–‰์ด๋ƒ ์—ฌ๋Ÿฌํ–‰์ด๋ƒ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„
์กฐํšŒ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์— ๋”ฐ๋ผ์„œ ํƒœ๊ทธ ์•ˆ์— ์ž‘์„ฑ๋˜๋Š” ์†์„ฑ์ด ๋‹ฌ๋ผ์ง

select ํƒœ๊ทธ ์†์„ฑ

resultType : ์กฐํšŒ ๊ฒฐ๊ณผ๊ฐ€ 1ํ–‰ 1์—ด์ธ ๊ฒฝ์šฐ์—๋งŒ ์ž‘์„ฑ
์กฐํšŒ๋œ ๋ฐ์ดํ„ฐ์˜ Java ์ž๋ฃŒํ˜•์„ Mybatis ๋ณ„์นญ ํ˜•ํƒœ๋กœ ์ž‘์„ฑ

[mybatis ๋ณ„์นญ]
java		:		mybatis

int			:		_int
Integer		:		int
String		:		string (java.lang.String)

1. 1ํ–‰ ์กฐํšŒ (์ „๋‹ฌ๋˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ X) ๋ฐฉ๋ฒ•

 << member-mapper.xml >>
 
<!-- ์กฐํšŒ๋˜๋Š” ํ–‰์˜ ๊ฐœ์ˆ˜ : 1ํ–‰ / ์กฐํšŒ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž… : intํ˜• -->
<select id ="test1" resultType="_int">
	 	SELECT COUNT(*) FROM MEMBER
</select>

<< MemberDAO >>
  
//1ํ–‰ ์กฐํšŒ(์ „๋‹ฌ๋˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ X) ๋ฐฉ๋ฒ•
// int count = sqlSession.selectOne("namespace๊ฐ’.id๊ฐ’");
								// member-mapper.xml์— ์จ์žˆ์Œ

// ์กฐํšŒ๋˜๋Š” ํ–‰์˜ ๊ฐœ์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ๋ฉด sqlSession.selectList("namespace๊ฐ’.id๊ฐ’")
 
int count = sqlSession.selectOne("memberMapper.test1");
logger.debug(count + "");

์„œ๋ฒ„๋Œ๋ ค์„œ ๋กœ๊ทธ์ธํ•˜๋ฉด console์ฐฝ์— ์•„๋ž˜์ฒ˜๋Ÿผ ๋œฐ๊ฑฐ์ž„

2. 1ํ–‰ ์กฐํšŒ(์ „๋‹ฌ๋˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ O) ๋ฐฉ๋ฒ•

 << member-mapper.xml >>
 
<!-- ์กฐํšŒ๋˜๋Š” ํ–‰์˜ ๊ฐœ์ˆ˜ : 1ํ–‰ / ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž… : String  / ์กฐํšŒ๋˜๋Š” ํƒ€์ž… : String -->
<select id="test2" parameterType="string" resultType="string">
	SELECT MEMBER_NICK FROM MEMBER
	WHERE MEMBER_EMAIL = #{memberEmail}
	AND SECESSION_FL = 'N'
</select>	
<< MemberDAO >>
  
// 1ํ–‰ ์กฐํšŒ ( ํŒŒ๋ผ๋ฏธํ„ฐ O) ๋ฐฉ๋ฒ•
String memberNickname = sqlSession.selectOne("memberMapper.test2",inputMember.getMemberEmail());
logger.debug(memberNickname);

์„œ๋ฒ„๋Œ๋ ค์„œ ๋กœ๊ทธ์ธํ•˜๋ฉด console์ฐฝ์— ์•„๋ž˜์ฒ˜๋Ÿผ ๋œฐ๊ฑฐ์ž„
โ—์กฐํšŒ ํ•  ๋•Œ db๊ฐ’ ์ค‘๋ณต๋˜๋ฉด ์˜ค๋ฅ˜๋œจ๋‹ˆ ์ค‘๋ณต์•ˆ๋˜๋Š”๊ฑธ๋กœ ์กฐํšŒํ•˜๊ธฐ


๋‚˜๋จธ์ง€ ์ถ”๊ฐ€์ ์ธ ์˜ˆ์‹œ๋Š” ๋‚ด์ผ๋กœ ์ด์–ด์„œ ๐Ÿ˜Š๐Ÿ˜Š๐Ÿ˜Š

profile
๐Ÿ‘ฉโ€๐Ÿ’ผ๐Ÿ‘ฉโ€๐Ÿ’ผโžก๏ธโžก๏ธโžก๏ธ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘ฉโ€๐Ÿ’ป ์ƒ์‚ฐ์ž์˜ ์‚ถ์„ ์‚ด๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๊ณต๋ถ€์ค‘

0๊ฐœ์˜ ๋Œ“๊ธ€