MyBatis入门实例-包括实体类与数据库字段对应&CLOB字段处理

声明:本文大部分参考@孤傲苍狼的文章点击打开链接,在这之中加入了一些我的个人总结


1、我的开发环境是 jdk1.7+ecplise+oracle 11g

     用到的jar包:mybatis-3.1.1.jar 

ojdbc6.jar            


2、项目整体结构 





3、首先配置conf.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>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<!-- 配置数据库连接信息 -->
			<dataSource type="POOLED">
				<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
				<property name="url" value="jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:orcl" />
				<property name="username" value="xxx" />
				<property name="password" value="xxx" />
			</dataSource>
		</environment>
	</environments>

</configuration>


4、数据库表创建

-- Create table
create table DIM_LANE_AREA
(
  lane_id       NUMBER(4) not null,
  lane_name     VARCHAR2(100) not null,
  direction     CHAR(2) not null,
  facility_list CLOB not null,
  account_list  CLOB not null,
  description   VARCHAR2(100)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    next 1M
    minextents 1
    maxextents unlimited
  );
-- Add comments to the columns 
comment on column DIM_LANE_AREA.lane_id
  is '单行道编号';
comment on column DIM_LANE_AREA.lane_name
  is '单行道名称';
comment on column DIM_LANE_AREA.direction
  is '单行道方向';
comment on column DIM_LANE_AREA.facility_list
  is '设备列表';
comment on column DIM_LANE_AREA.account_list
  is '账户列表';
comment on column DIM_LANE_AREA.description
  is '描述';
-- Create/Recreate indexes 
create unique index DIM_LANE_AREA_1 on DIM_LANE_AREA (LANE_ID)
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    next 8K
    minextents 1
    maxextents unlimited
  );
create index DIM_LANE_AREA_2 on DIM_LANE_AREA (DIRECTION)
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    next 8K
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints 
alter table DIM_LANE_AREA
  add constraint DIM_LANE_AREA primary key (LANE_ID);


5、编写实体类LaneArea.java

package me.gacl.po;

/**
 * 单行道配置信息PO
 * @author wqq
 * @time 2016-09-21
 */
public class LaneArea 
{
	/**
	 * 单行道编号
	 */
	private Integer laneId;
	
	/**
	 * 单行道名称
	 */
	private String laneName;
	
	/**
	 * 单行道方向
	 */
	private String direction;
	
	/**
	 * 设备列表<span style="font-family: Arial, Helvetica, sans-serif;">(该字段为CLOB类型,以逗号分隔)</span>
	 */
	private String facilityList;
	
	/**
	 * 账户列表(该字段为CLOB类型,以逗号分隔)
	 */
	private String accountList;
	
	/**
	 * 描述
	 */
	private String description;

	public Integer getLaneId() {
		return laneId;
	}

	public void setLaneId(Integer laneId) {
		this.laneId = laneId;
	}

	public String getLaneName() {
		return laneName;
	}

	public void setLaneName(String laneName) {
		this.laneName = laneName;
	}

	public String getDirection() {
		return direction;
	}

	public void setDirection(String direction) {
		this.direction = direction;
	}

	public String getFacilityList() {
		return facilityList;
	}

	public void setFacilityList(String facilityList) {
		this.facilityList = facilityList;
	}

	public String getAccountList() {
		return accountList;
	}

	public void setAccountList(String accountList) {
		this.accountList = accountList;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	@Override
	public String toString() 
	{
		return "LaneArea [lane_id=" + laneId + ", lane_name=" + laneName + ", facility_list=" + facilityList + "]";
	}
}

注意:1、我之前没有在这个实体类里加入toString(),返回了一个对象,虽然也对,但是没有直观效果,这个toString()可以直观的看到你返回的结果。

6、配置LaneAreaMapper.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="me.gacl.mapping.laneAreaMapper">
	<!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,
	不能够重复 使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型 
		resultType="me.gacl.po.LaneArea"就表示将查询结果封装成一个LaneArea类的对象返回 LaneArea类
		就是dim_lane_area表所对应的实体类 -->
	<!-- 根据id查询得到一个LaneArea对象 -->
	<select id="getLaneAreaResultMap" parameterType="int" resultMap="LaneAreaResultMap">
		select * from dim_lane_area where lane_id = #{lane_id}
	</select>
	<!--这里因为实体类的属性与数据库字段不对应,所以要加上resultMap-->
	<resultMap type="me.gacl.po.LaneArea" id="LaneAreaResultMap">
         <id property="laneId" column="lane_id"/>
         <result property="laneName" column="lane_name"/>
         <result property="facilityList" column="facility_list" javaType="String" jdbcType="VARBINARY"/>
    </resultMap>
</mapper>

7、在conf.xml中注册LaneAreaMapper.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>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<!-- 配置数据库连接信息 -->
			<dataSource type="POOLED">
				<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
				<property name="url" value="jdbc:oracle:thin:@192.168.1.40:1521:ETL" />
				<property name="username" value="lane" />
				<property name="password" value="123" />
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
         <!-- 注册LaneAreaMapper.xml文件, 
         LaneAreaMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/LaneAreaMapper.xml-->
         <mapper resource="me/gacl/mapping/laneAreaMapper.xml"/>
    </mappers>

</configuration>


8、编写测试类

package me.gacl.test;

import java.io.IOException;
import java.io.InputStream;
import me.gacl.po.LaneArea;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class Test1 {

    public static void main(String[] args) throws IOException {
        //mybatis的配置文件
        String resource = "conf.xml";
        //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
        InputStream is = Test1.class.getClassLoader().getResourceAsStream(resource);
        //构建sqlSession的工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
        //使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
        //Reader reader = Resources.getResourceAsReader(resource); 
        //构建sqlSession的工厂
        //SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        //创建能执行映射文件中sql的sqlSession
        SqlSession session = sessionFactory.openSession();
        /**
         * 映射sql的标识字符串,
         * me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
         * getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
         */
        String statement = "me.gacl.mapping.laneAreaMapper.getLaneAreaResultMap";//映射sql的标识字符串

        LaneArea laneArea = session.selectOne(statement, 8);
        System.out.println(laneArea);
    }
}

启动Tomact,运行Test1,返回结果如下:


至此大工告成。

9、最后推荐一个自动生成实体类,Mapper.xml,DAO的工具: Mybatis-Generator
相关文章:点击打开链接




  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值