mybatis的详细介绍

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.doselect id="selectid"id是为了唯一标识sql语句resultType=java.util.map标识当行记录的类型// 手工查询(根据命名空间 – 命名空间与Mapper接口一致) -> com/easytopit/demo/mybatis/mapper/persistent/UserMapperNS.xmlusers = 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语句<insert id="addRecord" parameterType="map" ><!–取主键,通过取主键的最大值+1,适合单线程,不建议使用 然后将主键设置为key放到map中

--><selectKey keyColumn="mykey" keyProperty="scoreNo" order="BEFORE" resultType="int" >select max(s_id)+1 as mykey from ex_score</selectKey>insert into ex_score (s_id,u_id,s_score,s_create_date,s_level) values(#{scoreNo},#{userId},#{userScore},#{createTime},#{level})</insert>

sql和include标签将相同的sql语句封装放到sql标签里面,然后使用include标签调用sqlsql里面的特殊符号在xml转义小写 &lt;小于等于&lt;=maven插件出故障

C:\Users\Administrator\.m2\repository\org\apache\maven\plugins\maven-resources-plugin

删除导致的问题,在网路的情况下自动更新插件,如果中途网络出现故障,就会出现问题动态sqltrimprefix='where' prefixoverrides='and'意思是如果前缀有and,将and覆盖成where注意,要在每个条件前面加上andtrim转settrim prifix = 'set' prefixoverrides='' suffix='' suffixoverride=','意思是将前面空格替换成set,将后面的,替换成空格set开头添加set,结尾去掉逗号where作用:如果有条件满足,自动添加上where,并且会自动去掉满足第一个条件的andforeach大部分用于循环in里面的数据foreach collection='传进来对象的属性' close=') item=''变量' open='(' separator='每个数据之前用逗号分开'不建议在where1=1 ,因为会读取所有的表,有性能问题缓存缓存的意思是,所有查询的过一次的数据临时存储在内存中,第二次则判断内存是否存在,不存在就去读取数据库要考虑的问题,当内存不足 时,考虑将某些数据踢出去一级缓存是session级别的缓存,必须是session相同,取出来的缓存数据才相同不然你每次插叙查询一次都会去数据库查找效果:同一个session操作数据时,第二次操作直接去缓存里面去,无需重新去数据库操作对增差改查二级缓存是sessionfactory级别效果,使用同一个sesseionfactory,当第一个sesseion的数据存入到sesseion中,然后session关闭,如果有启用了二级缓存,数据会被推送到二级缓存里面,然后下次使用新的sesseion时,会直接从二级缓存里面读取启动二级缓存在mapper里面,使用<cache></cache>子主题 4不建议使用二级缓存相当于之前的全局变量对查询安全算法fifo将队列最右端的数据踢出去lfu:least frequently used使用次数最少的踢出去也就是数据存到数据库到删除使用次数最少的LRU:least recently userd最近使用次数最少的在指定时间内使用次数最少的实现缓存缓存的每行数据必须有唯一标识符(表中的主键),也就是map如果有就从map中取,没有就添加子主题 1

以上就是mybatis的详细介绍的详细内容,更多请关注其它相关文章!

爱情不是避难所,想进去避难的话,是会被赶出来的。

mybatis的详细介绍

相关文章:

你感兴趣的文章:

标签云: