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. /touch滑屏事件

    //touch滑屏事件     var windowHeight = $(window).height(),     $body = $("body");     $body.cs ...

  2. 读书笔记--C陷阱与缺陷(七)

    第七章 1.null指针并不指向任何对象,所以只用于赋值和比较运算,其他使用目的都是非法的. 误用null指针的后果是未定义的,根据编译器各异. 有的编译器对内存位置0只读,有的可读写. 书中给出了一 ...

  3. 以太坊go-ethereum常见问题汇总

    (1)什么是 Ethereum? 以太坊是一个分散的智能合同平台,由Ether的加密货币提供支持. (2) 听说过以太坊,但什么是Geth,Mist,Ethminer,Mix? Geth: 以太坊节点 ...

  4. SQL Server 管理常用的SQL和T-SQL

    1. 查看数据库的版本 select @@version 常见的几种SQL SERVER打补丁后的版本号: 8.00.194 Microsoft SQL Server 2000 8.00.384 Mi ...

  5. Windbg在应用层调试漏洞时的应用

    主要记录一些在应用层调试漏洞的技巧,不会写一些基本的命令,只记录比较有用的平时难以想到的调试方法. 1.!address eax 查看对应内存页的属性,如果poc触发异常之后就可以用这个指令看一下触发 ...

  6. Pg168-1

    1.Pg168-1 package org.hanqi.pn0120; public class Computer { private double neicundx=10; public doubl ...

  7. bzoj 1264 [AHOI2006]基因匹配Match dp + 树状数组

    思路:好难想啊, 考虑到应该从每个数字只有5个数字下手, 但是不知道到底该怎么写.. 首先我们将第一个串按数字的种类分类, 每一类里面有5个, 然后将第二个串里面的数字一个一个加,如果一个加入的第 i ...

  8. 纯CSS实现3D图像轮转

    CSS演武场今天继续,今天看一个纯css实现的3D图像轮转效果,请大家猛戳研究效果先,也可下载收藏先. 首先看html文件,div.billboard为效果的容器,利用10个div.poster分割图 ...

  9. thinkphp和ueditor自定义后台处理方法整合

    先了解一下ueditor后台请求参数与返回参数格式规范: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ...

  10. Hadoop整理二(Hadoop分布式存储系统HDFS)

    一.背景 当数据集的大小超过一台独立物理计算机的存储能力时,就有必要对它进行分区(partition) 并存储到若干台单独的计算机上.管理网络中跨多台计算机存储的文件系统称为分布式文件系统 (dist ...