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 + "]";
- }
- }
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,返回结果如下:
MyBatis入门实例-包括实体类与数据库字段对应&CLOB字段处理的更多相关文章
- 解决mybatis实体类和数据库列名不匹配的两种办法
我们在实际开发中,会遇到实体类与数据库类不匹配的情况,在开发中就会产生各种各样的错误,那么我们应该怎么去解决这一类的错误呢?很简单,下面我们介绍两种解决方法: 首先我们看一下数据库和实体类不匹配的情况 ...
- 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 ...
- Springboot mybatis generate 自动生成实体类和Mapper
https://github.com/JasmineQian/SpringDemo_2019/tree/master/mybatis Springboot让java开发变得方便,Springboot中 ...
- 在Code First中使用Migrations对实体类和数据库做出变更
在Code First中使用Migrations对实体类和数据库做出变更,Mirgration包含一系列命令. 工具--库程序包管理器--程序包管理器控制台 运行命令:Enable-Migration ...
- ef-codefirst方式配置实体类,生成数据库
做项目的时候,如果我们如果用orm方式来做数据库持久化操作的话.微软官方首先会向我们推荐ef,而我们用ado.net的话,似乎也需要建立实体类来接传值,那么我们用codefirst就有一举两得的效果了 ...
- ASP.NET Core EFCore 之DBFirst 自动创建实体类和数据库上下文
通过引用Nuget包添加实体类 运行 Install-Package Microsoft.EntityFrameworkCore.SqlServer 运行 Install-Package Micros ...
- C# 实体类转json数据过滤掉字段为null的字段
C# 实体类转json数据过滤掉字段为null的字段 语法如下: var jsonSetting = new JsonSerializerSettings {NullValueHandling = N ...
- Oracle数据库使用mybatis的时候,实体类日期为Date类型,mybatis里面定义的是Date类型,插入的时候,时分秒全部是12:00:00问题
实体类中日期定义的是Date类型的,没毛病: 我在mybatis里面定义的是Date类型的,进行测试的时候发现,数据库插入的日期的时分秒全部都是一样的,都是12:00:00,很郁闷: 后来把mybat ...
- mybatis中实体类跟数据库属性不一致解决方案
1.在Mapper.xml映射配置文件中给sql语句起别名 select id as uid,username as name from user 2.mybatis中可以单独的配置查询结果的列名和实 ...
随机推荐
- 从源码分析StringUtils包
今天用到StringUtils.join方法,闲来无聊,看了下源码 当然不可能自己分析,你傻啊,在这里推荐一个别人分析的; http://blog.csdn.net/baidu_31071595/ar ...
- Postman接口&压力测试
Postman接口与压力测试实例 Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件.它提供功能强大的 Web API & HTTP 请求调试. 1.环境变量和全局 ...
- Kubernetes之YAML文件
一.YAML 基础 YAML是专门用来写配置文件的语言,非常简洁和强大,使用比json更方便.它实质上是一种通用的数据串行化格式.后文会说明定义YAML文件创建Pod和创建Deployment. YA ...
- hdu 5137 去掉一个点 使得最短路最大(2014广州现场赛 K题)
题意:从2~n-1这几个点中任意去掉一个点,使得从1到n的最短路径最大,如果任意去掉一个点1~n无通路输出Inf. Sample Input4 51 2 31 3 71 4 502 3 43 4 23 ...
- 【LOJ】#2290. 「THUWC 2017」随机二分图
题解 看了一眼觉得是求出图对图统计完美匹配的个数(可能之前做过这样模拟题弃疗了,一直心怀恐惧... 然后说是统计一下每种匹配出现的概率,也就是,当前左边点匹配状态为S,右边点匹配状态为T,每种匹配出现 ...
- python之web框架(2):了解WSGI接口
python之web框架(2):了解WSGI接口 1.什么是wsgi接口: wsgi:Web Service Gateway Interface.它不是模块,而只是一种规范,方便web服务器和各种框架 ...
- thinphp中auth认证方法使用
一.获取Auth类1.ThinkPHP3.1.3完整版:http://www.thinkphp.cn/down/338.html2.OneThink1.0正式版:https://github.com/ ...
- numpy.base_repr 方法解释
首先看官方文档: numpy.base_repr(number, base=2, padding=0) 将给定的 number 值,换算成给定的 base 进制(默认 2 进制)的值,以字符串的形式返 ...
- 前端安全系列之二:如何防止CSRF攻击?
背景 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点.在移动互联网时代,前端人员除了传统的 XSS.CSRF 等安全问题之外,又时常遭遇网络劫持 ...
- 在chrome开发者工具中观察函数调用栈、作用域链、闭包
在chrome的开发者工具中,通过断点调试,我们能够非常方便的一步一步的观察JavaScript的执行过程,直观感知函数调用栈,作用域链,变量对象,闭包,this等关键信息的变化.因此,断点调试对于快 ...