您的位置:首页 > 其它

10分钟学会使用mybatis

2015-03-08 12:43 495 查看
第一步,下载mybatis的jar包。这一步非常简单:

pom.xml

<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.2.8</version>
		</dependency>

以前要查询官网,有时候还不一定马上能找到,特别像mybatis以前又叫ibatis,有github,有apache,有code.google等等,根本不知道哪个。而且即使找到了最新的官网,还得找jar的下载位置。现在都不需要了,用maven10秒钟搞定。在eclipse里搜索mybatis,查出所有版本,直接下载最新的3.2.8即可。如果要源代码,也可以从maven下载。

pipeliner/src/main/java/com/age/sale/dao/SqlMapConfig.xml

数据库配置文件:(这里配置了,tomcat的server.xml就不用配了)

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE configuration  
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!-- 给bean取别名用在mapping文件中 -->
	<typeAliases>
		<typeAlias type="com.age.sale.bean.Worker" alias="Worker" />
		<typeAlias type="com.age.sale.bean.StatResult" alias="StatResult" />
	</typeAliases>
	<environments default="development">
		<environment id="development">
			<!-- 使用JDBC的事务管理 -->
			<transactionManager type="JDBC" />
			<!-- 数据源 -->
			<dataSource type="POOLED">
				<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
				<property name="url" value="jdbc:oracle:thin:@32.121.2.130:1521:bsstest" />
				<property name="username" value="AUTOAC1" />
				<property name="password" value="AUTOAC1" />
			</dataSource>
		</environment>
	</environments>
	<!-- 这里可以写多个实体的映射文件 -->
	<mappers>
		<mapper resource="com/linkage/sale/bean/WorkerSqlMap.xml" />
		<mapper resource="com/linkage/sale/bean/DataCountSqlMap.xml" />
	</mappers>
</configuration>


pipeliner/src/main/java/com/age/sale/bean/StatResult.java

package com.age.sale.bean;

/**
 * 数据统计结果
 * 
 * @author ouyida3
 * @since 2015.3.6
 */
public class StatResult {
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}


pipeliner/src/main/java/com/age/sale/dao/DataCountSqlMap.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">

<!-- namespace用于java代码调用时识别指定xml的mapper文件 -->
<mapper namespace="com.age.sale.bean">
	<sql id="field2">
		net_type_name name
	</sql>
	<select id="queryMonthAndDay" resultType="StatResult">
		select
		<include refid="field2" />
		from TS_B_DETAILSTAT a,td_s_netcode b where a.EPARCHY_CODE = #{EPARCHY_CODE} AND a.CYCLE_ID = #{CYCLE_ID}
 AND a.STAT_FIELD = b.NET_TYPE_CODE
 AND A.STAT_TYPE = 'NET_TYPE_CODE'
 AND b.NET_TYPE_NAME like '%'||#{DATA_NAME}||'%'
 AND a.STAT_FIELD = #{STAT_FIELD}
 AND a.SOURCE_TYPE = #{SOURCE_TYPE}
 AND a.SUB_CYCLE_ID!= '0'
 ORDER BY a.SUB_CYCLE_ID DESC
	</select>
</mapper>


先写测试类DayMonthBalanceDaoTest.java

package com.age.sale.dao;

import static org.junit.Assert.*;

import java.util.List;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.linkage.appframework.data.DataMap;
import com.linkage.appframework.data.IData;
import com.linkage.sale.bean.StatResult;

/**
 * @since 2015.3.6
 */
public class DayMonthBalanceDaoTest {
	@SuppressWarnings("unchecked")
	@Test
	public final void testQueryByNetTypeWithResult() {
		IData cond_data = new DataMap();
		cond_data.put("SOURCE_TYPE", "EVERYDAY");
		cond_data.put("EPARCHY_CODE", "0751");
		cond_data.put("CYCLE_ID", "201403");
		cond_data.put("DATA_NAME", "");
		cond_data.put("STAT_FIELD", "33");

		DayMonthBalanceDao dao = new DayMonthBalanceDao();
		List<StatResult> result = dao.queryByNetType(cond_data);
		assertEquals(result.size(), 1);
	}
}


dao调用类:

package com.age.sale.dao;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.age.appframework.data.IData;
import com.age.sale.bean.StatResult;

/**
 * @since 2015.3.6
 */
public class DayMonthBalanceDao {

	public List<StatResult> queryByNetType(IData param) {
		SqlSessionFactory factory = null;
		try {
			Reader reader = Resources.getResourceAsReader("com/age/sale/dao/SqlMapConfig.xml");
			factory = new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			e.printStackTrace();
		}

		SqlSession session = factory.openSession();
		List<StatResult> list = session.selectList("com.linkage.sale.bean.queryMonthAndDay", param);
		return list;
	}
}


后续改进项:

1、数据库连接要配置多个,并且根据不同的城市自动切换数据库连接;

2、dao类不要直接进行数据库连接,应该单独分离出来;

3、数据库连接考虑怎样连接、释放最节省;

出自ouyida3的csdn blog

2015.3.8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: