본문 바로가기

Language/C#

MyBatis.NET CRUD(1) - mySql DB연동

MyBatis.NET CRUD(1) - mySql DB연동

MyBatis.NET의 아주 기본적인 작업에 대해서 살펴보려합니다.^^ 프로젝트를 생성하고 데이터를 조회하는데 객체 매핑을 어떻게 하는지 확인 하실 수 있습니다실전으로 고고!!!

프로젝트 생성

우선 간단한 CRUD를 확인하는 작업이기에 응용프로그램을 다음과 같이 디자인 해보겠습니다.

(정말 간단하다.. )

[그림 1] UI 구성

초기 작업

Data Mapper작업을 위해서 초기에 설정해줘야하는 작업들이 있습니다앞세션에서 관련된 파일들을 언급했었는데요해당 파일들이 어떤 역할들을 하는지 살펴보겠습니다. MyBatis.Net 사이트에서 다운 받은 파일 중에 IBatisNet.Common.dll과 IBatisNet.DataMapper.dll을 해당 프로젝트에 참조해주세요.

[그림 2] dll 참조

\IBatis.DataMapper.1.6.2.bin\Ibatis.DataMapper.1.6.2.bin폴더에 아래config 파일이 존재합니다프로젝트에 추가해주세요새로 만들어도 되지만 xml로 작성되기때문에 오류률을 줄이기위해 가져다 편집을 하는 방법을 선택하겠습니다.

(모든 파일 보기로 찾으시고, 추가한 sample.SqlMap.config파일은 SqlMap.config로 이름 바꾸기 해주세요.)

[그림 3] config 파일 참조

여기까지 진행하셨다면 다음과 같이 프로젝트가 구성됩니다.

[그림 4] 프로젝트 구성

Config 파일 설정

providers.config 파일 내용을 확인하면 많은 DBMS Provider가 정의되어 있습니다. 제가 사용하는 ProviderMySql입니다다른 Provider는 enabled="false해주시고“sqlServer2.0”는 는 enabled="true" 설정해주세요.

* 버전을 확인하시기 바랍니다.

<?xml version="1.0" encoding="utf-8"?>
<providers 
xmlns="http://ibatis.apache.org/providers
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<clear/>

<provider 
name="MySql" 
description="MySQL, MySQL provider 6.4.4.0" 
enabled="true
default="true
assemblyName="MySql.Data, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionClass="MySql.Data.MySqlClient.MySqlConnection" 
commandClass="MySql.Data.MySqlClient.MySqlCommand" 
parameterClass="MySql.Data.MySqlClient.MySqlParameter" 
parameterDbTypeClass="MySql.Data.MySqlClient.MySqlDbType" 
parameterDbTypeProperty="MySqlDbType" 
dataAdapterClass="MySql.Data.MySqlClient.MySqlDataAdapter" 
commandBuilderClass="MySql.Data.MySqlClient.MySqlCommandBuilder" 
usePositionalParameters="false" 
useParameterPrefixInSql="true" 
useParameterPrefixInParameter="true" 
parameterPrefix="?"
allowMARS="false" 
/>
</providers>

다음은 SqlMap.config 파일입니다데이터베이스 연결 영역에 다음과 같이 DB 연결설정을 해주세요.

(./는 bin/Debug폴더를 가리킵니다. 결론적으로 "./providers.config"는 "bin/Debug/providers.config"라는 거죠)

<?xml version="1.0" encoding="utf-8"?>
<sqlMapConfig 
xmlns="http://ibatis.apache.org/dataMapper
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">



<settings>
<setting useStatementNamespaces="false"/>
</settings>

<providers resource="./providers.config"/>

<!-- Database connection information -->
<database>
<provider name="MySql"/>
<dataSource name="test" connectionString="Data Source=localhost; Initial Catalog=DB명; user id=아이디; password=비번;"/>
</database>

<sqlMaps>
<sqlMap resource="./test.xml" />

</sqlMaps>

</sqlMapConfig>

데이터 조회

기본 설정이 마무리 되었으니 이제부터 데이터를 한번 조회해보겠습니다. MyBatis는 쿼리와 결과 데이터의 매퍼 역할을 하는 프레임워크입니다그래서 단순히 매퍼 역할만하게되는데요그 부분을 xml로 정의합니다. test데이터베이스에서 mybatistest테이블을 조회할건데요프로젝트에 매퍼 역할을 하는 test.xml 파일을 생성해주세요또한 응용프로그램에서 용이하게 사용하는 test의 엔티티를 test.cs로 구성해보겠습니다.

test.cs는 다음과 같이 작성해주세요.

*public 꼭 써주세요. 아주 중요합니다. 이것을 잊으면 몇날 며칠 고생하실수 있어요.

public class test

{

public int id{ getset; }

public string name{ getset; }

public int age{ getset; }

}

다음은 test.xml 내용을 확인해보죠!! Select statement를 다음과 같이 작성해주면 됩니다.

<?xml version="1.0" encoding="utf-8" ?>

<sqlMap namespace="프로젝트 네임" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://ibatis.apache.org/mapping">

<alias>

<typeAlias alias="test" type="프로젝트 네임.클레스네임" />

</alias>

<statements>

<select id="SelectTest"resultClass="test(alias의 alias명)" >

select * from 내 테이블명

</select>

</statements>

</sqlMap>

UI에 다음 네임스페이스를 추가해주시고요.

using IBatisNet.Common;

using IBatisNet.DataMapper;

조회 버튼을 클릭해서 데이터를 조회해보겠습니다. Mapper 객체를 통해서 데이터를 조회하여 결과값을 리턴합니다.

privatevoid btnSelect_Click(object sender, EventArgs e)

{

try

{

IList<test> list = Mapper.Instance().QueryForList<test>("SelectTest"null);

dataGridView1.DataSource = list;

}

catch (Exception ex)

{

MessageBox.Show(ex.ToString());

}

}

다음과 같이 Bin 폴더에 config 파일,cs파일과 xml파일을 이동시킵니다(cs파일의 위치는 상관없습니다.).

* bin폴더가 안보이신다구요? 솔루션 탐색기 도구모음에서 모든파일 보기를 클릭하시면 보입니다.

 

[그림 5] bin/Debug 에 추가

조회된 화면입니다조회를 한번하기위해 긴여정을 걸쳤습니다그래도 MyBatis를 사용하는 장점이 뭔가 있겠죠?! 다음편에서 그 진실을 파헤져보겠습니다.

[그림 6] 조회 결과 화면

수정하실때에는 bin/Debug 안에 있는 config, xml파일을 손보심 됩니다.

출처 : www.sqler.com