栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis操作

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis操作

一.增删改查

1.查询数据


        select * from admin where account = #{account} and password = #{password}

2.删除数据


    delete from admin where id = #{id}

3.增加数据


    insert into admin (account,password,gender) 
    values (#{account},#{password},#{xb})

4.修改数据


    update admin set account=#{account},
    password=#{password},gender=#{xb} where id = #{id}

补充:

#{}和${}的区别

#{}:占位符,是经过预编译的,编译好SQL语句在取值,#方式能够防止sql注入

${}:拼接符,会传入参数字符串,取值后再去编译SQL语句,$方式无法防止sql注入${}

注意:Mybatis排序时使用order by 动态参数时需要注意,用$而不是#

二.映射

简单类型输出类型

返回简单基本类型

对象映射

如果表中的类名与类中的属性名完全相同,mybatis会自动将查询结果封装到POJO对象中

如果java中使用标准驼峰命名,数据库中使用下划线连接命名,可以开始全局设置实现自动转换


特殊处理定义 resultMap

定义resultMap


    
    
    
    
    
    
    
    
        
    
    
        
    

(1).resultMap的id属性是resultMap的唯一

(2).id属性是映射的POJO类

(3).id标签映射主键,result标签映射非主键

(4).property设置POJO的属性名称,column映射查询结果的列名称

使用resultMap

(1).输出映射使用的是resultMap ,而不是resultType

(2).resultMap引用了userResultMap

多表关联处理结果集

resultMap元素中association ,collection元素

Collection关联元素处理一对多关系


    
    
    
    
        
        
    


    SELECT
    s.id,
    s.no,
    s.name,
    s.gender,
    s.gradeid
    from student s


    select  * from student
    
        
            no=#{no}
        
        
            and name=#{name}
        
        
            and gender=#{gender}
        
    
-->

if test="条件"

where 一旦where标签中的if有成立的条件,会动态的添加where关键字

一旦有像and or这样的关键字,可以动态删除

trim元素

trim prefix="自定义的前缀" prefixOverrides="覆盖指定的关键字" suffix="自定义的后缀" suffixOverrides =""

Choose元素


    select * from student where no in
    
        #{no}
    

foreach可以在sql中进行迭代一个集合

item 表示集合中的每一个元素进行迭代时的别名

index 指定一个名字,用于表示在迭代过程中,每次迭代到的位置

open表示该语句以什么考试

separator表示在每次进行迭代之间以什么符号作为分隔符

close表示以什么结束

collection 如果传入的参数类型时List时,collection属性值为list

如果传入的参数类型为array数组的时候。collection属性值为array

五.特殊符号处理
特殊字符        转义字符
  <             <
  >             >
  "             "
  '             '
  &             & 
也可以使用包裹特殊字符
      

五.缓存

缓存的概念

作用:是为了减去数据库的压力,提高查询性能

原理:是从数据库中查询出来的对象在使用完后不要销毁,而是存储在内存中,当在此需要获取该对象是,直接从内存中直接获取,不在像数据库执行select语句,从而减少了对数据库的查询次数,因此提高了数据库的性能。

Mybatis有一级缓存和二级缓存

一级缓存

@Test
public void cacheDemo(){
    SqlSession sqlSession = MyBatisUtil.getsqlSessionFactory();
    StudentDao studentDao = sqlSession.getMapper(StudentDao.class);
    Student student = new Student();
    student.setId(2);
    student.setName("李四");
    List students =  studentDao.findStudentList(student);
    System.out.println(students);
    // studentDao.updateStudent(student);//增删操作后,会清空一级缓存
    // sqlSession.clearCache(); //清空一级缓存
    System.out.println("===============================");
    student.setName("李四");
    List students1 = studentDao.findStudentList(student);
    System.out.println(students1);
    sqlSession.close(); //关闭sqlsession会清空一级缓存
}

二级缓存

(1).启用缓存


(2).对象序列化

将所有的POJO类实现序列化接口Java.io.Serializable

(3).再Mapper映射文件中添加表示此mapper开启二级缓存

当SqlSession关闭时,会将数据存入到二级缓存

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1016737.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号