mybatis jdbctype数据类型_mybaits-mybatis配置
一 前言
这篇文章涵盖了大量的mybatis配置,读懂一篇,收益终身。
二 properties配置
之前发布的文章中配置数据库连接信息是直接写入到mybatis-config.xml
;为了使用灵活方便,和动态修改配置,我们将配置内容提取到配置文件db.properties
(放在resource目录下,也可自定义)中,然后在 配置文件中的<properties>
标签引入 db.properties
所在的位置,然后就可以在 配置文件中使用 ${key} 获得 db.properties
中对应 key 的 value; 为此以后修改配置文件仅修改外面的 db.properties
中内容即可;
2.1 mybatis-config.xml
配置文件修改内容如下, MyBatis 3.4.2 之后还支持 默认属性例如:${username:root} ,当配置文件中未定义该属性时会读取默认属性root,更多详细的属性配置看官网;
<!-- 引入resource目录下的配置文件 --><properties resource="db.properties"><property name="username" value="root"/><property name="password" value="123456"/></properties><!-- 全局环境配置--><environments default="development"><environment id="development"><!-- 事物 --><transactionManager type="JDBC"/><!-- 配置数据源 --><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><!-- 配置默认值--><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments>
2.2 db.properties
属性文件内如如下;
driver = com.mysql.jdbc.Driver
username = root
url = jdbc:mysql://192.168.0.100:3306/mybatis
password = 123456
三 typeAliases配置
typeAliases也就是别名的意思,我们之前查询的结果有个 resultType
属性,每次返回时都要使用类的全限定名(例如:com.zszxz.config.entity.Student),这种配置方式比较繁琐,mybatis 可以通过配置别名的方式使用简单类名代替类的全限定名;
3.1 配置方式一
第一种配置比较繁琐,也就是你有多少个返回类型的实体类,就在 mybatis-config.xml 的属性 <typeAliases>
中配置多少个类名的映射;
mybatis-config.xml代码片段如下,需注意的标签的放置位置;
<typeAliases><typeAlias type="com.zszxz.config.entity.Student" alias="student"></typeAlias></typeAliases>
mapper.xml 配置如下:
<!-- 查询学生--><select id="getStudent" resultType="student">select * from student</select>
3.2 配置方式二
第二种配置方式就是使用包名配置,mybaits就会进行自动映射,我们在mapper.xml中就可以使用类的简单名称表示全类名,这种方式比较简洁,推荐使用;
mybatis-config.xml代码片段如下
<typeAliases><package name="com.zszxz.config.entity"/></typeAliases>
mapper.xml 配置如下:
<!-- 查询学生--><select id="getStudent" resultType="student">select * from student</select>
3.3 配置方式三
第三种配置方式是使用注解配置,这种配置方式基于第二种的配置方式上,能够修改默认别名(默认是使用类的简单类名);在返回类型的实体上使用注解 @Alias可以指定别名;
实体如下:
/*** @Author lsc* @Description <p> </p>* @Date 2019/12/1 20:07*/
@Alias("stu")
public class Student {// idprivate String id;// 学生姓名private String name;// 学生编号private String number;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}
}
mapper.xml如下:
<!-- 查询学生--><select id="getStudent" resultType="stu">select * from student</select>
3.4 mybatis内置别名
mybatis 内置了多别名类型,即有些数据类型不需要配置别名也可以使用类的简单名称,比如java的8中基本数据类型和对应的包装类型,集合,迭代器,String类,大数值,日期等;
四 setting 配置说明
https://blog.csdn.net/youku1327/article/details/103604724 抱歉了,太长了可以看我得博客。
官方完整示例如下,实际开发中并非如此配置,按需配置;
<settings><setting name="cacheEnabled" value="true"/><setting name="lazyLoadingEnabled" value="true"/><setting name="multipleResultSetsEnabled" value="true"/><setting name="useColumnLabel" value="true"/><setting name="useGeneratedKeys" value="false"/><setting name="autoMappingBehavior" value="PARTIAL"/><setting name="autoMappingUnknownColumnBehavior" value="WARNING"/><setting name="defaultExecutorType" value="SIMPLE"/><setting name="defaultStatementTimeout" value="25"/><setting name="defaultFetchSize" value="100"/><setting name="safeRowBoundsEnabled" value="false"/><setting name="mapUnderscoreToCamelCase" value="false"/><setting name="localCacheScope" value="SESSION"/><setting name="jdbcTypeForNull" value="OTHER"/><setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>
五 typeHandlers 类型处理器
类型处理器故名思意,也就是可以在java类型和数据库jdbc类型之间转换;如果要自定义类型处理器就需要编写类型处理器类,然后在配置文件中配置,在SQL映射文件mapper.xml中使用。
5.1 自定义TypeHandle
本次示例就以字符串类型演示,需要继承BaseTypeHandler类,重写里面的方法,具体的代码清单如下,使用注解 @MappedJdbcTypes 会覆盖 泛型的String类型;
/*** @Author lsc* <p> 知识追寻者,字符串类型处理器</p>*/
// 指定关联jdbc会改变泛型指定
//@MappedJdbcTypes(JdbcType.VARCHAR)
public class StringTypeHandler extends BaseTypeHandler<String> {public void setNonNullParameter(PreparedStatement preparedStatement, int i, String s, JdbcType jdbcType) throws SQLException {// 指定java参数类型(String)对应数据库类型(varchar)preparedStatement.setString(i,s);}public String getNullableResult(ResultSet resultSet, String s) throws SQLException {return resultSet.getString(s);}public String getNullableResult(ResultSet resultSet, int i) throws SQLException {return resultSet.getString(i);}public String getNullableResult(CallableStatement callableStatement, int i) throws SQLException {return callableStatement.getString(i);}
}
5.2 mybatis-config.xml
在 mybaits的配置文件中配置自定义的类型处理器
<!--配置类型处理器,会覆盖默认的类型处理器 --><typeHandlers><typeHandler handler="com.zszxz.config.handler.StringTypeHandler"></typeHandler></typeHandlers>
也可以使用包名全局扫描,减轻配置过程;
<!--配置类型处理器,会覆盖默认的类型处理器 --><typeHandlers><package name="com.zszxz.config.handler"/></typeHandlers>
如果配置了jdbc的映射属性会覆盖泛型指定类型
<typeHandlers><!--指定关联jdbc会改变泛型指定 --><typeHandler handler="com.zszxz.config.handler.StringTypeHandler" javaType="java.lang.String" jdbcType="VARCHAR"></typeHandler></typeHandlers>
5.3 SQL映射文件
使用 jdbcType=VARCHAR,javaType=String 指定类型转换;
<insert id="addStudent" parameterType="stu">insert into student(`name`,`number`)values (#{name,jdbcType=VARCHAR,javaType=String},#{number})</insert>
六 mappers映射器
mappers映射器就是配置引入SQL映射文件,也很简单,这边就给出官方示例,不再具体试验,有四种方式,通常我们掌握一至两种就足够日常开发使用;
6.1 相对于类路径方式
<mappers><mapper resource="org/mybatis/builder/AuthorMapper.xml"/><mapper resource="org/mybatis/builder/BlogMapper.xml"/><mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>
6.2 资源绝对路径方式
<mappers><mapper url="file:///var/mappers/AuthorMapper.xml"/><mapper url="file:///var/mappers/BlogMapper.xml"/><mapper url="file:///var/mappers/PostMapper.xml"/>
</mappers>
6.3 接口实现类的完全限定类名方式
<mappers><mapper class="org.mybatis.builder.AuthorMapper"/><mapper class="org.mybatis.builder.BlogMapper"/><mapper class="org.mybatis.builder.PostMapper"/>
</mappers>
6.4 接口实现类的包名方式
<mappers><package name="org.mybatis.builder"/>
</mappers>
mybatis jdbctype数据类型_mybaits-mybatis配置相关推荐
- mybatis jdbctype oracle number,mybatis 插入null 时需要指定jdbcType
MyBatis 插入空值时,需要指定JdbcTypemybatis insert空值报空值异常,但是在pl/sql不会提示错误,主要原因是mybatis无法进行转换 insert into instr ...
- (转)mybatis常用jdbcType数据类型
阅读目录 1 MyBatis 通过包含的jdbcType类型 2 Mybatis中javaType和jdbcType对应和CRUD例子 3 Mybatis中javaType和jdbcType对应关系 ...
- Mybatis JdbcType与Oracle、MySql,javaType数据类型对应列表
Mybatis JdbcType与Oracle.MySql数据类型对应列表 Mybatis JdbcType Oracle MySql JdbcType ARRAY JdbcType BIG ...
- MyBatis JdbcType介绍
MyBatis JdbcType介绍 JdbcType介绍 数据库列字段都是有类型的,不同的数据库有不同的类型.为了表示这些数据类型,Java源码是采用枚举来定义的: public enum JDBC ...
- 深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)
上篇文章<深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)> 介绍了properties与environments, ...
- mybatis使用注解替代xml配置,动态生成Sql
mybatis使用注解替代xml配置时,遇到判断条件是否为null或者为空时,@Select很难搞定,不知道怎么办? mybatis3中增加了使用注解来配置Mapper的新特性,使用 SelectPr ...
- MyBatis-02 MyBatis XML方式概述及配置步骤
概述 一个简单的权限控制需求 创建数据库表 创建实体类 XML方式概述及步骤 1. 首先在src/main/resources下com.artisan.mybatis.xml.mapper目录下创建5 ...
- Mybatis学习第一天——Mybatis的安装配置以及基本CURD操作
1.Mybatis下载 Mybatis是开源的持久层框架,能够度jdbc进行简单的封装,但其并不是完全的ORM(Object Relational Mapping,对象关系映射),无法脱离数据库进行适 ...
- 【转】mybatis 自增主键配置
mybatis自增主键配置(?) mybatis进行插入操作时,如果表的主键是自增的,针对不同的数据库相应的操作也不同.基本上经常会遇到的就是Oracle Sequece 和 MySQL 自增主键,至 ...
最新文章
- boost::fibers::buffered_channel< std::string >用法的测试程序
- 8.10-11 mount、umount
- 【蓝桥杯省赛】冲刺练习题【循环】倒计时【15】天
- java socket 判断断网_java socket 判断对方在线或离线、断线
- C#学习笔记(十一):动态类型
- 帝都搬砖四年,我决定回老家考公务员
- B站又出事了,遭几大平台联合谴责
- vue-cli webpack浅析
- java 同音字_pinyin: The high performance pinyin tool for java.(java 高性能中文转拼音工具。支持同音字。)...
- Makefile教程(这一篇足够从入门到放弃!!!)
- 如何彻底卸载内置McAfee软件
- Silvaco仿真学习
- 数据安全治理方法导论
- GD32F450以太网(1):ETH 外设接口简介
- 使用python做手机app后台
- php双线切换线路,双线双路和断线自动切换
- 微信小程序外卖平台,免费下载小程序外卖源代码
- 【本/硕毕业生】开题报告及论文指导思路和撰写事项的整理
- 迭代最小二乘拟合椭圆
- C#医院门诊会员管理系统源码 通用会员系统源码
热门文章
- 1.4 异常处理机制及异常处理的基本结构
- Linux之交互式scripts
- dubbo配置文件加载顺序
- Spring boot程序入口
- ASP.NET通过ajax调用后台方法
- python爬虫新闻_python爬虫,爬取一系列新闻
- c++中函数放在等号右边_如何从C或C++中的函数返回多个值?
- junit测试NoSuchBeanDefinitionException: No bean named ‘dataSource‘ is define
- freemaker介绍及常见的用法解析
- 无法识别的配置节appsettings_人脸识别门禁考勤系统安装使用注意事项