Home  >  Article  >  Java  >  Detailed introduction of mybatis

Detailed introduction of mybatis

零下一度
零下一度Original
2017-07-17 13:08:041408browse

mybatis

usermapper.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="com.easytopit.demo.mybatis.mapper.UserMapper"><insert id="insert" useGeneratedKeys="true" keyProperty="id" >INSERT INTO et_user (username, truename, login_time) VALUES(#{username}, #{truename}, #{loginTime});</insert>
<update id="update">UPDATE et_user SET username=#{username}, truename=#{truename}, login_time=#{loginTime} WHERE id=#{id}</update>
<delete id="delete" parameterType="int">delete from et_user where id=#{id}</delete>
<select id="queryAll" resultType="com.easytopit.demo.mybatis.bean.User">SELECT id, username, truename, login_time loginTime FROM et_user LIMIT 10</select><select id="queryAllByPage" parameterType="java.util.HashMap"  resultType="com.easytopit.demo.mybatis.bean.User"><!-- SELECT id, username, truename, login_time loginTime FROM et_user LIMIT #{param1}, #{param2} -->   SELECT id, username, truename, login_time loginTime FROM et_user LIMIT #{pageOffset}, #{pageSize}</select><select id="query" resultType="com.easytopit.demo.mybatis.bean.User">SELECT id, username, truename, login_time loginTime FROM et_user WHERE id = #{id}</select></mapper>

namespace:
是为了解决相同名字的sql操作问题,有标识的作用
例如如果访问的路径是/add.do,如果namespace为/user,则访问路径为/user/add.do
select id="selectid"
id是为了唯一标识sql语句
resultType=java.util.map
标识当行记录的类型
// 手工查询(根据命名空间 - 命名空间与Mapper接口一致) -> com/easytopit/demo/mybatis/mapper/persistent/UserMapperNS.xml
users = session.selectList("NS.queryAll");
参数的三种方法
1:使用#{0}索引
2:使用参数#{param1} 从1开始
3:注解 @param(“name”)
jdk1.8支持参数注解,其他的不支持  参数名字和param(“”)名字一致
注意事项
#{} 实际上使用的jdbc的?占位符,是安全的
11:41:56.728 [http-bio-8080-exec-10] DEBUG c.e.c.m.AlbumMapper.deletelAlbum - ==>  Preparing: delete from ab_album where id = ?
${} 底层实际上使用的替换,要记得加单引号,是不安全的
11:47:29.831 [http-bio-8080-exec-10] DEBUG c.e.c.m.AlbumMapper.deletelAlbum - ==>  Preparing: delete from ab_album where id = 67
结果集映射
resulttype
映射一个具体的类
resultmap
先定义一个resultmap,然后映射
多对一映射
相当于先查询一个属性,然后自动使用属性作为参数调用其他的方法,再讲结果返回
column ''deptno ,property='dept',javaType=dept.class,one = @one(select = "命名空间.方法名")
一对多映射
懒加载
设置
需要的时候加载
出现的原因在于,应为一对多情况,有可能出现内存不足,所以当需要的时候,重新发起sql语句
insert selectkey标签
先通过sql语法,查询当前的列的最大值+1,放入到map中,然后insert into语句
ebe417cec8e6dd8aa4bcc9ae8674ba99
a1a737cdc392478b991d795071c2c3e51e508d9ebd6e1154da98407ebec4b9dc
子主题 4
不建议使用二级缓存
相当于之前的全局变量
对查询安全
算法
fifo
将队列最右端的数据踢出去
lfu:least frequently used
使用次数最少的踢出去
也就是数据存到数据库到删除使用次数最少的
LRU:least recently userd
最近使用次数最少的
在指定时间内使用次数最少的
实现缓存
缓存的每行数据必须有唯一标识符(表中的主键),也就是map
如果有就从map中取,没有就添加
子主题 1

The above is the detailed content of Detailed introduction of mybatis. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn