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

用到的jar包:mybatis-3.1.1.jar

ojdbc6.jar

2、项目整体结构

 
 

3、首先配置conf.xml文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
  3. <configuration>
  4. <environments default="development">
  5. <environment id="development">
  6. <transactionManager type="JDBC" />
  7. <!-- 配置数据库连接信息 -->
  8. <dataSource type="POOLED">
  9. <property name="driver" value="oracle.jdbc.driver.OracleDriver" />
  10. <property name="url" value="jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:orcl" />
  11. <property name="username" value="xxx" />
  12. <property name="password" value="xxx" />
  13. </dataSource>
  14. </environment>
  15. </environments>
  16. </configuration>

4、数据库表创建

  1. -- Create table
  2. create table DIM_LANE_AREA
  3. (
  4. lane_id       NUMBER(4) not null,
  5. lane_name     VARCHAR2(100) not null,
  6. direction     CHAR(2) not null,
  7. facility_list CLOB not null,
  8. account_list  CLOB not null,
  9. description   VARCHAR2(100)
  10. )
  11. tablespace USERS
  12. pctfree 10
  13. initrans 1
  14. maxtrans 255
  15. storage
  16. (
  17. initial 64K
  18. next 1M
  19. minextents 1
  20. maxextents unlimited
  21. );
  22. -- Add comments to the columns
  23. comment on column DIM_LANE_AREA.lane_id
  24. is '单行道编号';
  25. comment on column DIM_LANE_AREA.lane_name
  26. is '单行道名称';
  27. comment on column DIM_LANE_AREA.direction
  28. is '单行道方向';
  29. comment on column DIM_LANE_AREA.facility_list
  30. is '设备列表';
  31. comment on column DIM_LANE_AREA.account_list
  32. is '账户列表';
  33. comment on column DIM_LANE_AREA.description
  34. is '描述';
  35. -- Create/Recreate indexes
  36. create unique index DIM_LANE_AREA_1 on DIM_LANE_AREA (LANE_ID)
  37. tablespace USERS
  38. pctfree 10
  39. initrans 2
  40. maxtrans 255
  41. storage
  42. (
  43. initial 64K
  44. next 8K
  45. minextents 1
  46. maxextents unlimited
  47. );
  48. create index DIM_LANE_AREA_2 on DIM_LANE_AREA (DIRECTION)
  49. tablespace USERS
  50. pctfree 10
  51. initrans 2
  52. maxtrans 255
  53. storage
  54. (
  55. initial 64K
  56. next 8K
  57. minextents 1
  58. maxextents unlimited
  59. );
  60. -- Create/Recreate primary, unique and foreign key constraints
  61. alter table DIM_LANE_AREA
  62. add constraint DIM_LANE_AREA primary key (LANE_ID);

5、编写实体类LaneArea.java

  1. package me.gacl.po;
  2. /**
  3. * 单行道配置信息PO
  4. * @author wqq
  5. * @time 2016-09-21
  6. */
  7. public class LaneArea
  8. {
  9. /**
  10. * 单行道编号
  11. */
  12. private Integer laneId;
  13. /**
  14. * 单行道名称
  15. */
  16. private String laneName;
  17. /**
  18. * 单行道方向
  19. */
  20. private String direction;
  21. /**
  22. * 设备列表<span style="font-family: Arial, Helvetica, sans-serif;">(该字段为CLOB类型,以逗号分隔)</span>
  23. */
  24. private String facilityList;
  25. /**
  26. * 账户列表(该字段为CLOB类型,以逗号分隔)
  27. */
  28. private String accountList;
  29. /**
  30. * 描述
  31. */
  32. private String description;
  33. public Integer getLaneId() {
  34. return laneId;
  35. }
  36. public void setLaneId(Integer laneId) {
  37. this.laneId = laneId;
  38. }
  39. public String getLaneName() {
  40. return laneName;
  41. }
  42. public void setLaneName(String laneName) {
  43. this.laneName = laneName;
  44. }
  45. public String getDirection() {
  46. return direction;
  47. }
  48. public void setDirection(String direction) {
  49. this.direction = direction;
  50. }
  51. public String getFacilityList() {
  52. return facilityList;
  53. }
  54. public void setFacilityList(String facilityList) {
  55. this.facilityList = facilityList;
  56. }
  57. public String getAccountList() {
  58. return accountList;
  59. }
  60. public void setAccountList(String accountList) {
  61. this.accountList = accountList;
  62. }
  63. public String getDescription() {
  64. return description;
  65. }
  66. public void setDescription(String description) {
  67. this.description = description;
  68. }
  69. @Override
  70. public String toString()
  71. {
  72. return "LaneArea [lane_id=" + laneId + ", lane_name=" + laneName + ", facility_list=" + facilityList + "]";
  73. }
  74. }
 
注意:1、我之前没有在这个实体类里加入toString(),返回了一个对象,虽然也对,但是没有直观效果,这个toString()可以直观的看到你返回的结果。
 

6、配置LaneAreaMapper.xml文件

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="me.gacl.mapping.laneAreaMapper">
  4. <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,
  5. 不能够重复 使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
  6. resultType="me.gacl.po.LaneArea"就表示将查询结果封装成一个LaneArea类的对象返回 LaneArea类
  7. 就是dim_lane_area表所对应的实体类 -->
  8. <!-- 根据id查询得到一个LaneArea对象 -->
  9. <select id="getLaneAreaResultMap" parameterType="int" resultMap="LaneAreaResultMap">
  10. select * from dim_lane_area where lane_id = #{lane_id}
  11. </select>
  12. <!--这里因为实体类的属性与数据库字段不对应,所以要加上resultMap-->
  13. <resultMap type="me.gacl.po.LaneArea" id="LaneAreaResultMap">
  14. <id property="laneId" column="lane_id"/>
  15. <result property="laneName" column="lane_name"/>
  16. <result property="facilityList" column="facility_list" javaType="String" jdbcType="VARBINARY"/>
  17. </resultMap>
  18. </mapper>

7、在conf.xml中注册LaneAreaMapper.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
  3. <configuration>
  4. <environments default="development">
  5. <environment id="development">
  6. <transactionManager type="JDBC" />
  7. <!-- 配置数据库连接信息 -->
  8. <dataSource type="POOLED">
  9. <property name="driver" value="oracle.jdbc.driver.OracleDriver" />
  10. <property name="url" value="jdbc:oracle:thin:@192.168.1.40:1521:ETL" />
  11. <property name="username" value="lane" />
  12. <property name="password" value="123" />
  13. </dataSource>
  14. </environment>
  15. </environments>
  16. <mappers>
  17. <!-- 注册LaneAreaMapper.xml文件,
  18. LaneAreaMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/LaneAreaMapper.xml-->
  19. <mapper resource="me/gacl/mapping/laneAreaMapper.xml"/>
  20. </mappers>
  21. </configuration>

8、编写测试类

  1. package me.gacl.test;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import me.gacl.po.LaneArea;
  5. import org.apache.ibatis.session.SqlSession;
  6. import org.apache.ibatis.session.SqlSessionFactory;
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  8. public class Test1 {
  9. public static void main(String[] args) throws IOException {
  10. //mybatis的配置文件
  11. String resource = "conf.xml";
  12. //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
  13. InputStream is = Test1.class.getClassLoader().getResourceAsStream(resource);
  14. //构建sqlSession的工厂
  15. SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
  16. //使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
  17. //Reader reader = Resources.getResourceAsReader(resource);
  18. //构建sqlSession的工厂
  19. //SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
  20. //创建能执行映射文件中sql的sqlSession
  21. SqlSession session = sessionFactory.openSession();
  22. /**
  23. * 映射sql的标识字符串,
  24. * me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
  25. * getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
  26. */
  27. String statement = "me.gacl.mapping.laneAreaMapper.getLaneAreaResultMap";//映射sql的标识字符串
  28. LaneArea laneArea = session.selectOne(statement, 8);
  29. System.out.println(laneArea);
  30. }
  31. }

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

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

MyBatis入门实例-包括实体类与数据库字段对应&CLOB字段处理的更多相关文章

  1. 解决mybatis实体类和数据库列名不匹配的两种办法

    我们在实际开发中,会遇到实体类与数据库类不匹配的情况,在开发中就会产生各种各样的错误,那么我们应该怎么去解决这一类的错误呢?很简单,下面我们介绍两种解决方法: 首先我们看一下数据库和实体类不匹配的情况 ...

  2. ASP.NET实现二维码 ASP.Net上传文件 SQL基础语法 C# 动态创建数据库三(MySQL) Net Core 实现谷歌翻译ApI 免费版 C#发布和调试WebService ajax调用WebService实现数据库操作 C# 实体类转json数据过滤掉字段为null的字段

    ASP.NET实现二维码 using System;using System.Collections.Generic;using System.Drawing;using System.Linq;us ...

  3. Springboot mybatis generate 自动生成实体类和Mapper

    https://github.com/JasmineQian/SpringDemo_2019/tree/master/mybatis Springboot让java开发变得方便,Springboot中 ...

  4. 在Code First中使用Migrations对实体类和数据库做出变更

    在Code First中使用Migrations对实体类和数据库做出变更,Mirgration包含一系列命令. 工具--库程序包管理器--程序包管理器控制台 运行命令:Enable-Migration ...

  5. ef-codefirst方式配置实体类,生成数据库

    做项目的时候,如果我们如果用orm方式来做数据库持久化操作的话.微软官方首先会向我们推荐ef,而我们用ado.net的话,似乎也需要建立实体类来接传值,那么我们用codefirst就有一举两得的效果了 ...

  6. ASP.NET Core EFCore 之DBFirst 自动创建实体类和数据库上下文

    通过引用Nuget包添加实体类 运行 Install-Package Microsoft.EntityFrameworkCore.SqlServer 运行 Install-Package Micros ...

  7. C# 实体类转json数据过滤掉字段为null的字段

    C# 实体类转json数据过滤掉字段为null的字段 语法如下: var jsonSetting = new JsonSerializerSettings {NullValueHandling = N ...

  8. Oracle数据库使用mybatis的时候,实体类日期为Date类型,mybatis里面定义的是Date类型,插入的时候,时分秒全部是12:00:00问题

    实体类中日期定义的是Date类型的,没毛病: 我在mybatis里面定义的是Date类型的,进行测试的时候发现,数据库插入的日期的时分秒全部都是一样的,都是12:00:00,很郁闷: 后来把mybat ...

  9. mybatis中实体类跟数据库属性不一致解决方案

    1.在Mapper.xml映射配置文件中给sql语句起别名 select id as uid,username as name from user 2.mybatis中可以单独的配置查询结果的列名和实 ...

随机推荐

  1. 浅谈js设计模式之单例模式

    单例模式的定义是:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 单例模式是一种常用的模式,有一些对象我们往往只需要一个,比如线程池.全局缓存.浏览器中的 window 对象等.在 JavaS ...

  2. ASP .Net Core系统部署到SUSE 16 Linux Enterprise Server 12 SP2 64 具体方案

    .Net Core 部署到 SUSE 16 Linux Enterprise Server 12 SP2 64 位中的步骤 1.安装工具 1.apache 2..Net Core(dotnet-sdk ...

  3. table中的td等长(不随内容大小变化)

    使用的table时候发现td的长度是随着内容的大小而变化的,但是有的时候我们不希望这样.想要td等长可以在 tbale中加上         style=“table-layout:fixed”   ...

  4. java -D 参数功能解析

    我们都知道在启动tomcat或直接执行java命令的时候可以通过参数-XX等来配置虚拟机的大小,同样,也应该留意到java -Dkey=value的参数.那么这个参数是什么作用呢? 使用案例 其实,在 ...

  5. 【AtCoder】ARC094(C-F)题解

    C - Same Integers 题解 要么三个都达到最大的数,要么三个都到达最大的数+1,判断是前一种情况的方法是不断垫高前两大的,看之后最小的那个和最大的那个差值是不是2的倍数 否则就是第二种情 ...

  6. USACO 完结的一些感想

    其实日期没有那么近啦……只是我偶尔还点进去造成的,导致我没有每一章刷完的纪念日了 但是全刷完是今天啦 讲真,题很锻炼思维能力,USACO保持着一贯猎奇的题目描述,以及尽量不用高级算法就完成的题解……例 ...

  7. 微信公众号开发--用.Net Core实现微信消息加解密

    1.进入微信公众号后台设置微信服务器配置参数(注意:Token和EncodingAESKey必须和微信服务器验证参数保持一致,不然验证不会通过). 2.设置为安全模式 3.代码实现(主要分为验证接口和 ...

  8. hdoj2191 珍惜现在,感恩生活(01背包 || 多重背包)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2191 思路 由于每种大米可能不止一袋,所以是多重背包问题,可以直接使用解决多重背包问题的方法,也可以将 ...

  9. PHP 数组的添加和读取

    在实际的开发中,会经常使用数组的添加和读取.这里把经常使用的操作记下来,以备以后查阅. <?php //一维数值数组 $list = array('wang','god'); $list[] = ...

  10. redis在Linux下的远程连接

    1.redis在Linux下的远程连接: $ redis-cli -h host -p port -a password 如何连接到主机为 127.0.0.1,端口为 6379 ,密码为 mypass ...