Mybatis框架总结
Smaksze
集中起来的意志可以击穿顽石
展开
-
mybatis清除一级缓存的几种方法
1、手动清空sqlSession.clearCache()2、Options注解public interface UserMapper{ @Options(flushCache= Options.FlushCachePolicy.TRUE) User selectById(@params("id")Integer id)}3、调用了修改的方法时,底层直接调用sqlSession.clearCache()一次性全部清空4、在setting中关闭一级缓存locaCacheScope =原创 2021-12-09 11:08:59 · 5129 阅读 · 2 评论 -
mybatis一级缓存命中条件
1、执行的sql和参数必须相同如://命中:User user1 = userMapper.selectById(1);User user2 = userMapper.selectById(1);//缓存命中,返回结果为truesout(user1 == user2)//不命中:userMapper.selectById(1);userMapper.selectById(2);2、必须是相同的statementId (com.sms.mapper.UserMapper.selectB原创 2021-12-09 10:54:47 · 530 阅读 · 0 评论 -
解决springboot不扫描@repository的问题
问题:单独使用@repository注解注dao层,而且不使用@mapperscan扫描时,启动项目会报错:Field xxxxMapper in com.sms.shiro.service.impl.xxxxServiceImpl required a bean of type ‘com.sms.shiro.mapper.xxxxMapper’ that could not be found. 一,@mapper和@repository的区别:1.@mapper是mybatis的注解,@reposit原创 2021-06-09 09:43:44 · 4386 阅读 · 2 评论 -
Mybatis解决实体类属性和表字段对应不上
一、取别名二、使用@result注解,@results注解里面包含了id和多个result我们可以在results里面写上value属性,就可以在里面添加result了,result就是我们的一对一映射id字段用于标志是不是主键,然后column和property的含义就和xml配置是一样的,result之间用逗号隔开现在来跑一下查询所有,完美~那每个查询都要写那么多注解吗,不是的,results里有个id属性,就和我们xml的resultMap名称一样,支持定义名称然后我们只需在别的原创 2021-01-11 09:29:11 · 2623 阅读 · 0 评论 -
MyBatis Plus自定义SQL使用条件构造器QueryWrapper
1.注解的方式:@Select("select * from user_collection uc left join post p on uc.post_id = p.id ${ew.customSqlSegment}")IPage<Post> selectPosts(Page page, @Param(Constants.WRAPPER) QueryWrapper wrapper);使用注解方式只需添加 ${ew.customSqlSegment}和@Param(Constants转载 2020-09-15 15:30:33 · 2023 阅读 · 0 评论 -
MyBatis使用ResultMap处理一对多多对一
出现下列情况:员工表Emp和部门表Dept是多对一的关系,员工实体类中有Dept这个属性,但是多表连接查询的时候只能查出Dept这张表的did和dname,无法和Dept这个属性进行关联,此时若要查出员工信息表,那么Dept这个属性会是null.因此需要建立映射关系方法一:连表查询<!-- 列名和属性名一一对应 --><resultMap type="Emp" id="map1"> <id column="eid" property="eid"/>.原创 2020-08-18 18:57:15 · 657 阅读 · 0 评论 -
Mybatis执行过程源码分析
一. 通过Resources这个类获取一个输入流,加载mybatis的核心配置文件.二. 然后创建SqlSessionFactoryBuilder实例通过build()方法去读取这个输入流,得到一个工厂对象其中:第一步. 底层会创建一个装载配置文件的类XMLConfigBuild第二步通过这个类的对象的parse()方法去真正获取一个装载了所有配置文件的类对象configuration,该对象封装了我们在mybatis.xml中配置的所有信息.第三步,就这样,一个包含了所有配置信息的工厂对象原创 2020-08-18 17:14:38 · 200 阅读 · 0 评论 -
Mybatis框架的操作步骤和细节处理
增删改的返回值处理:在Mybatis中增删改只能有三种返回值返回void返回Boolean:返回操作是否成功返回Integer:返回受影响的行数给resultType设置别名的方式:在sqlMapConfig.xml中通过< typeAliases>标签设置,通过包扫描后,该包下的所有实体类在mapper.xml中返回值的类型以类名作为别名,不区分大小写 <typeAliases> <package name="com.sms.mybatis.pojo"/原创 2020-08-14 18:03:11 · 262 阅读 · 0 评论 -
解决Mybatis启动报错: Invalid bound statement (not found)
一、问题描述使用mybatis的项目在本地可以正常运行,但当使用maven或Jenkins打包部署到服务器上时出现了绑定错误,异常信息为:org.apache.ibatis.binding.BindingException: Invalid bound statement(not found): com.yo.news.user.mapper.UserMapper.getUserByTelPwd二、问题分析和解决方法首先,给定的异常提示信息并不精准,有多个错误原因都会抛出该异常。mybatis转载 2020-08-14 11:51:10 · 1014 阅读 · 0 评论 -
Mybatis获得参数值的两种方式:#{}和${}的区别
#{}: 底层创建一个PreparedStatement对象.< insert>insert into user values (null,#{name},#{age},#{gender})< /insert>sql执行时转化为以下:sql:insert into user values (null,?,?,?);${}:底层创建一个Statement对象.< insert>insert into user values (null,'${name}'原创 2020-07-03 11:24:57 · 482 阅读 · 0 评论 -
打开Mybatis核心配置文件SqlMapConfig.xml的代码提示功能
第一步:在mybatis的jar包里选择压缩打开mybatis-**.jar第二步:在mybatis-3.2.7.jar\org\apache\ibatis\builder\xml里面找到dtd文件,并将这两个文件保存在自己的电脑上第三步:配置eclipse中的xml原创 2020-07-02 13:42:26 · 151 阅读 · 0 评论