关于mybatis的应用
导入依赖
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
编写mybatis-config.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>
<properties resource="jdbc.properties"/>
<typeAliases>
<!-- 配置别名,配置之后返回类型就不用写全路径了-->
<package name="com.swun.pojo"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="password" value="${jdbc.password}"/>
<property name="username" value="${jdbc.username}"/>
<!-- <property name="username" value="root"/>-->
<!-- <property name="password" value="889886hp"/>-->
<!-- <property name="driver" value="com.mysql.jdbc.Driver"/>-->
<!-- <property name="url" value="jdbc:mysql://127.0.0.1:3306/happy?useSSL=false"/>-->
</dataSource>
</environment>
</environments>
<mappers>
<!--加载sql映射文件-->
<!-- <mapper resource="com/swun/mapper/Tb_randMapper.xml.bak"/>-->
<!--Mapper代理方式-->
<package name="com.swun.mapper"/>
</mappers></configuration>
里面的SQL映射文件
<?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="com.swun.mapper.Tb_brandMapper">
</mapper>
关于设置驼峰规范映射
<!-- 标准的 日志工厂实现 -->
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
<!-- 是否开启自动驼峰命名规则 (camel case)映射 -->
<!-- <setting name="mapUnderscoreToCamelCase" value="true"/>-->
<!-- 开启全局缓存 -->
<setting name="cacheEnabled" value="true"/>
</settings> <typeAliases>
<package name="com.inspur.pojo"/>
</typeAliases>
配置文件标签推荐顺序
-----------------------配置文件顶部---------------------------------------------------
<?xml version="1.0" encoding="UTF-8" ?> 这一部分是xml配置文件的相关配置 版本+编码集 【MyBatis的DTD约束:固定写法】
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
-----------------------配置文件顶部-------------------------------------------------- 核心配置文件中的 引入标签的顺序:
是由约束决定的 通过约束 【ctrl+鼠标左键】 可以进入 约束查看
<!ELEMENT configuration (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)>
按照约束规定的顺序书写就可以 顺序应该是: 1.<properties自闭合标签 resource属性/>
a. 标签作用:引入数据库的配置文件 文件名一般是:JDBC.properties
b. 属性值:配置文件路径(String) 由于配置文件一般放在src文件夹下 所以一般写成配置文件的名称 2.<settings标签>
<setting标签 name属性1 value属性1/>
<setting标签 name属性2 value属性2/>
</settings>
a. settings标签:引入插件的配置文件(相对根标签 内部可以引入多个插件)
b. setting 标签:引入单个插件的配置文件 在settings 标签内部 可以有多个
b1. name 属性:自行百度 很多属性 根据需求查找
b2. value 属性:自行百度 很多属性 根据需求查找 3.<typeAliases标签>
<typeAlias 自闭合标签 type属性 alias属性/>
<package 自闭合标签 name属性/>
</typeAliases>
a.typeAliases 标签 : 这里是对映射配置文件中的 resultType和 parameterType 起别名,为了使用便捷【相对根标签、起别名是对于自定义的javaBean类】
b.typeAlias 标签: 对于单个javaBean类 起别名
b1.type属性:从src包开始的javaBean类的路径
b2.alias属性:起的别名【一般是以类名为别名 首字母小写】
c.package 标签: 因为一般情况 我们会把所有的javaBean类 都放到bean这个包下 ,所以这里提供的这个标签是对一个包下所有的javaBean类起别名
c.name属性:从src包开始的bean包的路径 -----------------------中间间隔-----[暂时还没有配置的标签]-----------------------------
4.typeHandlers
5.objectFactory
6.objectWrapperFactory
7.reflectorFactory ----------------------中间间隔------[暂时还没有配置的标签]-----------------------------
8.<plugins标签>
<plugin标签 interceptor属性></plugin>
</plugins>
a.plugins标签:配置插件的相对根标签 由于可能会配置多个插件 所以需要plugins根标签包裹
b.plugin标签:配置单个插件的标签
b1. interceptor属性:值为需要配置的插件的路径
配置分页功能的属性值为:com.github.pagehelper.PageInterceptor 固定路径【lib直接在src下】
9.<environments标签 default属性>
<environment标签 id属性>
<transactionManager标签 type属性>
<dataSource标签 type属性>
<property标签 name属性 value属性/>
<property标签 name属性 value属性/>
<property标签 name属性 value属性/>
........
</dataSource标签>
</environment标签> <environment标签 id属性>
<transactionManager标签 type属性>
<dataSource标签 type属性>
<property标签 name属性 value属性/>
<property标签 name属性 value属性/>
<property标签 name属性 value属性/>
........
</dataSource>
</environment>
<environments>
a. environments标签:用来引入数据库环境的配置单元根标签【可包含多个】
a1. default 属性:与 environment中的id属性相对应 使用哪个environment中的id属性 就代表使用哪个配置 b. environment 标签:单个数据库环境引入的根标签
b1. id属性:每一个属性的唯一标识 通过id属性的值 来找到使用的是哪个配置 c. transactionManager标签:确定事务管理模式的标签
c1. type属性:确定使用哪个事务管理模式 一共两个值:
JDBC:正常的commit和rollback 方式
MANAGE:百度查具体是什么意思 d. dataSource 标签:规定使用何种数据源的标签(连接池,第三方容器等等)【相对根标签】
d1. type属性:具体确定数据源使用何种模式配置 一共三个值:
UNPOOLED:百度查含义
POOLED:使用连接池
JNDI:其他框架提供的容器 e. property 标签:配置数据源的单个配置标签 【其实就是JDBC所需要的的配置 包含:驱动配置,数据库地址,登录账号,密码等等】
e1.name:与JDBC的配置文件中的key一一对应 每个key对应一条property 标签语句
e2.value:底层获取 JDBC配置文件 对应key的值 格式是: ${变量名} 变量名为了代码的可读性一般和key是一样的 -----------------------中间间隔-----[暂时还没有配置的标签]-----------------------------
10.databaseIdProvider
-----------------------中间间隔-----[暂时还没有配置的标签]----------------------------- 11.<mappers 根标签>【基于配置文件sql语句来实现 使用这个Mappers标签中的格式】
<mapper标签 resource属性>
</mappers>
a. mappers标签 :引入映射文件(sql语句的配置文件)的根标签
b. mapper标签:mapper标签 一次有且只能有一个 使用哪一个Mapper接口 就配置哪个相对应的Mapper
resource:引入单个映射文件的标识:与每一个映射文件自定义文件名相同【需要加后缀】
11.<mappers 根标签> 【基于注解配置sql语句 使用这个Mappers标签中的格式】
<package标签 name属性/>
</mappers>
a.mappers标签:解释同上
package属性:值是 你的数据访问层的哪个接口所在的是哪个包 需要注意的是:这里是包路径而不是文件路径 而且包路径可以不用那么精确
比如 准确包路径是: com.xxx.mapper 写成 com.xxx也可以 写成 com也可以【底层通过遍历找到】
关于mybatis的应用的更多相关文章
- 【分享】标准springMVC+mybatis项目maven搭建最精简教程
文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...
- Java MyBatis 插入数据库返回主键
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...
- [原创]mybatis中整合ehcache缓存框架的使用
mybatis整合ehcache缓存框架的使用 mybaits的二级缓存是mapper范围级别,除了在SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓 ...
- 【SSM框架】Spring + Springmvc + Mybatis 基本框架搭建集成教程
本文将讲解SSM框架的基本搭建集成,并有一个简单demo案例 说明:1.本文暂未使用maven集成,jar包需要手动导入. 2.本文为基础教程,大神切勿见笑. 3.如果对您学习有帮助,欢迎各种转载,注 ...
- mybatis plugins实现项目【全局】读写分离
在之前的文章中讲述过数据库主从同步和通过注解来为部分方法切换数据源实现读写分离 注解实现读写分离: http://www.cnblogs.com/xiaochangwei/p/4961807.html ...
- MyBatis基础入门--知识点总结
对原生态jdbc程序的问题总结 下面是一个传统的jdbc连接oracle数据库的标准代码: public static void main(String[] args) throws Exceptio ...
- Mybatis XML配置
Mybatis常用带有禁用缓存的XML配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...
- MyBatis源码分析(一)开篇
源码学习的好处不用多说,Mybatis源码量少.逻辑简单,将写个系列文章来学习. SqlSession Mybatis的使用入口位于org.apache.ibatis.session包中的SqlSes ...
- (整理)MyBatis入门教程(一)
本文转载: http://www.cnblogs.com/hellokitty1/p/5216025.html#3591383 本人文笔不行,根据上面博客内容引导,自己整理了一些东西 首先给大家推荐几 ...
- MyBatis6:MyBatis集成Spring事物管理(下篇)
前言 前一篇文章<MyBatis5:MyBatis集成Spring事物管理(上篇)>复习了MyBatis的基本使用以及使用Spring管理MyBatis的事物的做法,本文的目的是在这个的基 ...
随机推荐
- Blazor组件自做四 : 使用JS隔离封装signature_pad签名组件
运行截图 演示地址 响应式演示 感谢szimek写的棒棒的signature_pad.js项目, 来源: https://github.com/szimek/signature_pad 正式开始 1. ...
- Redis分布式实现原理
一.使用 1.pom.xml导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <ar ...
- window.history.go(-1);后退不刷新问题 移动端
在后退的界面上添加 判断是否是返回window.addEventListener('pageshow', function (e) { if(e.persisted || (window.per ...
- LC-844
给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true .# 代表退格字符. 注意:如果对空文本输入退格字符,文本继续为空. 示例 1: 输入:s = &qu ...
- coolshell-初见
首页:https://coolshell.cn/tag/programmer 我是怎么招聘程序员的 https://coolshell.cn/articles/1870.html 程序员需要具备的基本 ...
- Visual Studio 打包和安装 exe
# Visual Studio 打包和安装 exe > **小型项目(无复杂的库)** //VS2022 作为演示平台 > 1.解决方案配置 = Release > 2.解决 ...
- linux设备管理之主设备号与次设备号
主设备号和次设备号 一个字符设备或者块设备都有一个主设备号和次设备号.主设备号和次设备号统称为设备号.主设备号用来表示一个特定的驱动程序.次设备号用来表示使用该驱动程序的其他设备.(主设备号和控制这类 ...
- JS将某个数组分割为N个对象一组(如,两两一组,三三一组等)
方法一: var result = []; var data = [ {name:'chen',age:'25'}, {name:'chen',age:'25'}, {name:'chen',age: ...
- Restful API和传统的API的区别
一.功能区别 Restful API是当作资源的唯一标识符,而传统是实现某某功能 如:/api/getList/1 and /api/getList?page=1 二.methods多样性 Restf ...
- 倒计时第3天!Google Summer of Code报名即将截止!(Casbin社区还有空缺名额)
Google Summer of Code 介绍 Google Summer of Code ( GSoC ,即 Google 编程之夏)是 Google (谷歌)组织并提供经费,面对全球在读学生的在 ...