Mybatis
来源:互联网 发布:医药销售数据分析 编辑:程序博客网 时间:2024/05/23 02:03
Mybatis是apache的一个开源项目iBatis,
Mybatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装。
Mybatis的作用
Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集
JDBC问题总结
a,数据库连接频繁创建和释放浪费性能
b,sql语句和手动设置参数,获取结果集,硬编码在代码中不方便维护
Mybatis与Hibernate的区别:
mybatis是一个半自动化的orm持久层框架
Hibernate是全自动化的orm持久层框架
1 Hibernate比mybaitis的编码要简单一点
2 mybatis学习成本比较低
3 Hibernate可以跨数据库 mybatis不可以。
namespace 命名空间 是用来隔离sql
id:sql的唯一标识符
parameterType: 指定参数类型
基础类型:当#{}和${}的总数量等于一个的时候,使用基本数据类型
pojo类型: 当#{}和${}的总数量大于一个的时候,始于on个pojo类型
resultType:结果集类型
list:: 如果返回集合类型,那么指定集合的泛型里面的类型,因为返回集合,可以调用selectList方法
那么Mybatis,就知道要返回一个list,但是Mybatis不知道集合泛型里面的类型
#{} : 占位符,跟jdbc的?一样 起到占位的作用
如果parameterType 是基础类型,那么#{}里面的变量可以是任意名称
如果parameterType是pojo类型,那么#{}里面的变量鼻息是属性名称
${} 拼接符 起到sql语句原样拼接的作用, 基本上like的时候使用拼接符
如果parameterType 是基础类型,那么${}里面的变量必须是value
如果parameterType 是pojo类型, 那么${} 里面的变量必须是属性名称
<select id="findUserById" parameterType="int" resultType="cn.itcast.pojo.User">
select * from user where id=#{id}
</select>
<select id="findUserByUserName" parameterType="string" resultType="cn.itcast.pojo.User">
select * from user where username like '%${value}%'
</select>
LAST_INSERT_ID(),必须跟insert语句在同一个事务隔离 才能查询到最后一个增加的id
keyProperty:指定主键的属性名称,查询出来的id放到这个属性里面
resultType: 指定结果集的类型
order :指定LAST_INSERT_ID() 是在inser语句之前运行还是在最后运行,必须选择after
<insert id="insertUser" parameterType="cn.itcast.pojo.User" >
insert into user (username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address})
<selectKey keyProperty="id" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
typeAlias : 起别名
type:起别名的类型
alias: 别名 无大小写区分
package:批量起别名
别名: 就是类名
url:必须配置绝对路径
resource:相对路径
<mapper resource="User.xml"/>
class : 指定接口的全路径名称
规则1: 接口文件和映射文件必须在同一个包下
规则2:接口文件和映射文件必须名称想通,除了扩展名
package:批量扫描动态代理的接口和xml映射文件
规则1:接口文件和映射文件必须在同一个包下
规则2:接口文件和映射文件必须名称相同,除了扩展名
- MyBatis
- MyBatis
- Mybatis
- myBatis
- mybatis
- MyBatis
- mybatis
- Mybatis
- MyBatis
- Mybatis
- mybatis
- MyBatis
- MyBatis
- mybatis
- MyBatis
- mybatis
- mybatis
- mybatis
- 记java项目cpu 内存过高分析
- Max and Bike CodeForces
- 2017北大信科夏令营机试E:怪盗基德的滑翔翼
- JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释
- windows caffe matlab 可视化
- Mybatis
- 剑指Offer—19—顺时针打印矩阵
- Xutils网络请求
- java-堆里面的分区:Eden,survival(from) to,老年代,各自的特点。
- Python机器学习与数据分析系列(2)-线性回归
- .net,Url重写以后Session访问报错的问题解决
- node.js之调试器
- 基于TCP的Socket文件双向传输
- 关于100根香蕉,猴子要背回50米远的家,一次最多只能背50根香蕉,但猴子每走1米后就要吃1根香蕉,问猴子最多可以背多少根香蕉回家?