MyBatis是如何使用的?
MyBatis前身世iBatis本是Apache的一个开源项目,2010年这个项目迁移到google code并改名为MyBatis.
一、高级软件介绍
1.JDK 8
2.Eclipse mars2
3.MySql
4.Navicat
二、数据库SQL命令
1.创建数据库并指定编码
Create database 数据库名 default character set utf8
2.创建表
Create table 表名(
列名 类型 约束 auto_increment comment ‘备注’,
);
三、Eclipse使用
1.创建项目
1.1选择target runtime,否则出现新建jsp报错
1.2如果忘记选择,右键项目–>build path–>configure path–>选项卡 library–>第四个add library–>server runtime
2.Eclipse默认会自己下载所需tomcat最简单结构
四、命名规范
1.项目名:没有要求,不起中文
2.包:公司域名倒写edu.swpu
3.数据访问层:dao,persist,mapper
4.实体:entity,model,bean,javabean,pojo
5.业务逻辑:service,biz
6.控制器:controller,servlet,action,web
7.过滤器:filter
8.异常:exception
9.监听器:listener
10.注释:
10.1类上和方法上使用文档注释
/** */
1
10.2 在方法里面使用
/* */ 或 //
1
11.类: 大驼峰
12.方法,属性:小驼峰
五、MVC开发模式
1.M:Model模型、实体类、业务和dao
2.V:view视图 JSP
3.C:Controller控制器,servlet
3.1作用:视图和逻辑分离
4.MVC适用场景:大型项目开发
5.图示例
5.1先设计数据库
5.2先写实体类
5.3持久层
5.4业务逻辑
5.5控制器
5.6视图
六、框架是什么?
1.框架:软件的半成品,为解决问题制定的一套约束,在提供功能基础上进行扩充
2.框架中一些不能被封装的代码(变量),需要使用框架者新建一个xml文件,在文件中添加变量内容
2.1需要建立特定位置和特定名称的配置文件
2.2需要使用xml解析技术和反射技术
3.常用概念
3.1类库:提供的类没有封装一定逻辑
举例:类库就是名言警句,写作文时引入名言警句
3.2框架:区别于类库,里面有一些约束
举例:框架是填空题
七、MyBatis简介
1.Mybatis开源免费框架,原名叫iBatis,2010在google code,2013年迁移到github
2.作用:数据访问层框架
2.1底层是对JDBC的封装
3.mybatis优点之一:
3.1使用mybatis时不需要编写实现类,只需要写需要执行的sql命令
八、环境搭建
MyBatis是一个持久层框架:提供SQL Maps和Data Access Objects(DAO)
开发步骤:
1、添加jar包(mybatis-3.2.3.jar)支持
2、核心配置文件mybatis-config.xml
3、编写持久化类和对应的映射文件
备注:其实在使用MyBatis开发的时候映射文件的配置占据了很大的部分,里面即包含了返回类型resultMap也包含了SQL语句。
备注:MyBatis提供了一个Resources类来读取配置文件,当然我们可以使用ClassLoader。
核心接口:SqlSessionFactory接口、SqlSession接口(最重要的接口)
默认情况下mybatis是不会打出sql语句以及一些日志文件的。
在src下加入log4j的配置文件,可以打印出日志信息:
首先加入log4j-1.2.17.jar,然后加入配置文件(properties或xml配置文件)
log4j.properties 或 log4j.xml(推荐使用xml配置文件,比较直观)
解决字段名与实体类属性名不相同的冲突方案?(别名或resultMap)
1.直接在mapper配置文件中写sql的时候使用别名
2.使用resultMap重新配置字段和属性的关系
mybatis-config.xml配置文件说明:
改配置文件完全可以参考官方文档给出的参考配置文件,比如可以配置javabean的别名,数据库连接基本信息等。使用typeAlias来配置javabean别名主要是为了方便而已,用不用都无所谓。
获得SqlSessionFactory方法:
String resource="mybatis-config.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
//获得资源文件的方式有好几种,获得sqlSessionFactory方式有点类似hibernate4.0之前获得SessionFactory的方式。
插入操作可以返回插入的主键id,外汇返佣http://www.fx61.com/,但是配置是要注意:(只对数据库维护的自增id有效)
keyColumn="person_id" keyProperty="personId" useGeneratedKeys="true"
keyColum对应的是数据库中的字段,keyProperty对应的javabean的属性
userGeneratedKeys表示使用返回自增主键id.(这三个参数只有出现在insert语句才有效)
具体javabean的Mapper.xml配置文件
@1.cache – 配置给定命名空间的缓存
@2.cache-ref – 从其他命名空间引用缓存配置
@3.resultMap – 最复杂,也是最有力量的元素,用来描述如何从数据库结果集中来加 载你的对象
@4.parameterMap – 已经被废弃了!老式风格的参数映射。内联参数是首选,这个元 素可能在将来被移除。这里不会记录
@5.sql – 可以重用的 SQL 块,也可以被其他语句引用
@6.insert – 映射插入语句
@7.update – 映射更新语句
@8.delete – 映射删除语句
@9.select – 映射查询语句
参数赋值使用这种方式: = #{名称}
Mybatis的动态SQL查询
1.if语句
2.choose(when、otherwise)
3.trim(where、set)
4.foreach语句
<if test=”表达式”>
执行内容
</if>
<choose>
<when test=””>
执行内容
</when>
........
<otherwise>
如果都不满足上述条件,执行内容
</otherwise>
</choose>
多表查询的时候通常都可以创建一个vo来装封装数据。
备注:使用Mybatis的SqlSession对象进行相关操作的时候,都是要先找到MapperStatement语句对应的ID(namespace+sql语句id),所以该ID必须是唯一的。sql语句id可以相同,但是整个ID不能够完全相同。ID是一个字符串,由namespace和语句id组成。
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的事物的做法,本文的目的是在这个的基 ...
随机推荐
- 小程序图片在安卓上拉伸的问题&导航&返回首页
今天提了一个bug,有几张图片在安卓上面加载会先变大拉伸再恢复正常 出现这样的问题应该是用widthFix造成的 具体原因还不是很清楚,因为都是本地图片,所以我就直接把高也设置好就暂时没有这个问题 ...
- ios执行失去焦点,不执行点击事件
原因:由于JavaScript为单线程,同一时间只能执行处理一个事件.“blur优先于click执行”.而在本示例中,由于blur处理程序,会将对下拉框展示区隐藏,所以导致其后续click事件并不会执 ...
- rest framework之渲染器
一.内置渲染器 REST框架包括许多内置的Renderer类,它们允许你使用各种媒体类型返回响应.还支持定义你自己的自定义渲染器. 内置渲染器的使用 1.全局设置 可以使用DEFAULT_RENDER ...
- mysql类型转换函数convert与cast的用法,及SQL server的区别
首先,convert函数 字符集转换 : CONVERT(xxx USING gb2312) 类型转换和SQL Server一样,不过类型参数上有不同: CAST(xxx AS 类型) ...
- SQl 分组后按照某一列拼接字符串
/* 分组之后拼接字符串 */ ;with t as( SELECT WorkflowId,Remark FROM dbo.OperatorAutomationProcess GROUP BY Wor ...
- sql 投影查询
使用SELECT * FROM <表名> WHERE <条件>可以选出表中的若干条记录.我们注意到返回的二维表结构和原表是相同的,即结果集的所有列与原表的所有列都一一对应. 如 ...
- vscode开发vue项目保存时自动执行lint进行修复
vscode下载eslint插件 vscode进行设置 找到settings.json 在里面写入如下内容进行保存 { "eslint.autoFixOnSave": tr ...
- P1523 旅行商简化版
P1523 旅行商简化版 题目背景 欧几里德旅行商(Euclidean Traveling Salesman)问题也就是货郎担问题一直是困扰全世界数学家.计算机学家的著名问题.现有的算法都没有办法在确 ...
- 浅谈学习selenium的一些知识点的总结
学习自动化测试,先得学习一门语言.自动化对语言要求掌握的程度不深,但必须得会基本的入门语法. 我学习的是python2,简单,易懂,上手快. 每天敲就是了. 我的学习路径是: 先学习一段时间pytho ...
- 函数的四种调用模式.上下文调用.call.apply
闭包:函数就是一个闭包,一个封闭的作用域; 返回函数,要返回多个函数就用一个对象封装一下, 立即执行函数+return 回调函数 JS动态创建的DOM,不会被搜索引 ...