mybatis在使用代理dao的方式实现增删改查时做什么事呢?
只有两件事: 第一:创建代理对象
? ? ? ? ? ? ? ? ? ? ? ?第二:在代理对象中调用selectList
我们读取配置文件用到了IO里面的Resources类,读出来的流也就是我们找到了我们要的这这些信息,交给了构建者,构建者使用工具类给我们构建了一个工厂对象,工厂里面的openSession()给我们提供了一个session方法,什么时候调用selectList查询所有的方法,创建Dao实现类增强的时候也就是创建代理对象的时候。
第一步 SqlSessionFactoryBuilder接收SqlMaoConfig.xml文件流,构建出SqlSessionFactory对象? // SqlSessionFactoryBuilder的build()方法里面有一个XMLConfigBuilder对象,他是做什么的呢?他是用来解析XML文件的一个构建者,通过他的parse()方法解析mybatis配置文件
第二步 SqlSessionFactory读取SqlMapConfig.xml中连接数据库和mapper映射信息。用来生产出真正操作数据库的SqlSession对象
第三步 SqlSession对象有两大作用:1、生成接口代理对象? 2、定义通用增删改查方法
第四步 在代理对象中执行目标对象的方法
第五步 封装结果集
?
模糊查询操作:
@Test
public void testFindByName(){
List<User> users = userDao.findByName("%王%");
for(User user : users){
System.out.println(user);
}
}
xml写法
select *from user where username like #{name}
@Test
public void testFindByName(){
List<User> users = userDao.findByName("王");
for(User user : users){
System.out.println(user);
}
}
xml写法
select *from user where username like '%${value}%'
?
?获取用户的总记录条数
select count(id) from user;
?
配置插入操作后,获取插入数据的id?
<insert id="saveUser" parameterType="com.itheima.domain.User">
<selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
select last_insert_id();
</selectKey>
insert into user(username,address,sex,birthday)values(#{username},#{address},#{sex},#{birthday});
</insert>
keyProperty="id" //id的属性名称对应实体类的
keyColumn="id" //id的类名对应表的
resultType="int" //结果集类型
order="AFTER" //什么时候执行获取id的操作
?
?
在plugin/tagbar.vim里面的键映射改成: \ ['nexttag', 'tab'], \ ['prevtag', 'f...
FCKeditor是现在最为流行的开源编辑器,SyntaxHighlighter是一个用JS实现的代码...
相信很多人做大批量数据导出和数据导入的时候,经常会遇到PHP内存溢出的问题,在...
1、大批量插入数据优化 (1)对于MyISAM存储引擎的表,可以使用:DISABLE KEYS ...
想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区 https://...
最近与同行交流,经常被问到分库分表与分布式数据库如何选择。 图片来自 Pexels ...
最近有一个服务出现了报警,已经让我到了忍无可忍的地步,报警信息如下: Metric...
笔记目录 前言 一、如何获取Mybatis 二、初步了解mybatis 1.什么是持久化(一个动...
今天使用ajax上传文件时,出现了错误。数据传输的方式是通过定义formData完成的...
在Laravel中使用cursor来查询并处理数据 (轻松处理千万级的数据) 事发现场 最近...