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

MyBatis笔记

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

MyBatis笔记

MyBatis笔记 1.MyBatis开发步骤 1.创建maven项目,加入相关的依赖

myBatis常用的依赖有


  org.mybatis
  mybatis
  3.5.1





  mysql
  mysql-connector-java
  8.0.25



        
            com.github.pagehelper
            pagehelper
            5.1.0
        

2.创建Dao接口,定义操作数据库的相关方法 3.创建MyBatis-mapper文件(sql映射文件)再里面些sql语句

sql映射文件的模板如下:






    //查询
    
        select userName,passWord,age,sex from student1;
    
     //插入
    
    
    
    //更新
    
    
    
    //删除
    
    

4.在Resource目录下面创建MyBatis的主配置文件

主配值文件需要做到 :1.连接到数据库 2.指定Mapper文件的位置

其模板如下:




    
    
    
        
        
    
    
        
            
            
                  
                
                
                
            
        

    

    
    
        
    

5.创建SqlSession对象来执行sql语句

其创建流程如下:

String config="MyBatis.xml";

InputStream in= Resources.getResourceAsStream(config);

SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);

SqlSession sqlSession=sqlSessionFactory.openSession();

StudentDao studentDao=sqlSession.getMapper(StudentDao.class);

使用要求:SqlSession对象线程不安全,需要在方法内使用,在执行sql语句之前,使用openSession()获取sqlSession对象。在执行完sql语句后,需要关闭它,执行SqlSession.close(),这样保证他的使用是线程安全的

2.MyBatis代码展示(动态代理方式) 1.加入依赖(myBatis和mysql的依赖) 2.Dao接口代码
public interface StudentDao {
    
    public List selectStudent();

}
3.Mapper文件代码





    
    select id as stuid,name as stuname,email as stuemail,age as stuage from student


注意:ResultType和ResultMap不能同时使用 6.动态sql(重点) 1.If标签
语法: sql语句  

例如:调用方法时候传进来的参数为20,然后Test判断条件等于20后sql拼接上去

    @Test
    public void test(){
        SqlSession sqlSession= MyBatisUtil.getSqlSession();
        StudentDao studentDao=sqlSession.getMapper(StudentDao.class);
        List list= studentDao.selectIf(20);
        for(Student l:list){
            System.out.println(l);
        }
        sqlSession.close();
    }

    select id,name,email,age from student
    
        
             
           and name=#{name}
        
        
           or age>#{age}
        
    

3.foreach标签

常用在in语句中


        select id,name,email,age from student where id in
        
            #{myId}
        
    
7.读取属性配置文件 MyBatis主配值文件的标签顺序:
核心配置文件中的 引入标签的顺序:
        是由约束决定的 通过约束 【ctrl+鼠标左键】 可以进入 约束查看
        
        按照约束规定的顺序书写就可以   顺序应该是:
     
        1.
            a. 标签作用:引入数据库的配置文件 文件名一般是:JDBC.properties
            b. 属性值:配置文件路径(String) 由于配置文件一般放在src文件夹下 所以一般写成配置文件的名称
     
        2.
                
                
          
            a. settings标签:引入插件的配置文件(相对根标签 内部可以引入多个插件)
            b. setting 标签:引入单个插件的配置文件 在settings 标签内部 可以有多个
            	b1. name 属性:自行百度 很多属性 根据需求查找
            	b2. value 属性:自行百度 很多属性 根据需求查找
     
        3.
               
               
          
            a.typeAliases 标签 : 这里是对映射配置文件中的 resultType和 parameterType 起别名,为了使用便捷【相对根标签、起别名是对于自定义的javaBean类】
            b.typeAlias 标签: 对于单个javaBean类 起别名
            	b1.type属性:从src包开始的javaBean类的路径
            	b2.alias属性:起的别名【一般是以类名为别名 首字母小写】
            c.package 标签: 因为一般情况 我们会把所有的javaBean类 都放到bean这个包下 ,所以这里提供的这个标签是对一个包下所有的javaBean类起别名
            	c.name属性:从src包开始的bean包的路径
     
      -----------------------中间间隔-----[暂时还没有配置的标签]-----------------------------
           4.typeHandlers
           5.objectFactory
           6.objectWrapperFactory
           7.reflectorFactory
           
      ----------------------中间间隔------[暂时还没有配置的标签]-----------------------------
        8.
          		
          
          	a.plugins标签:配置插件的相对根标签 由于可能会配置多个插件 所以需要plugins根标签包裹
          	b.plugin标签:配置单个插件的标签
          		b1. interceptor属性:值为需要配置的插件的路径
          			配置分页功能的属性值为:com.github.pagehelper.PageInterceptor 固定路径【lib直接在src下】
        9.
              
                   
                   
                       
                       
                       
                       ........
                  
              
     
              
                   
                   
                       
                       
                       
                       ........
                  
              
          
           a. environments标签:用来引入数据库环境的配置单元根标签【可包含多个】
               a1. default 属性:与 environment中的id属性相对应 使用哪个environment中的id属性 就代表使用哪个配置
     
           b. environment 标签:单个数据库环境引入的根标签
               b1. id属性:每一个属性的唯一标识 通过id属性的值 来找到使用的是哪个配置
     
           c. transactionManager标签:确定事务管理模式的标签
               c1. type属性:确定使用哪个事务管理模式 一共两个值:
                   JDBC:正常的commit和rollback 方式
                   MANAGE:百度查具体是什么意思
                   
           d. dataSource 标签:规定使用何种数据源的标签(连接池,第三方容器等等)【相对根标签】
               d1. type属性:具体确定数据源使用何种模式配置 一共三个值:
                   UNPOOLED:百度查含义
                   POOLED:使用连接池
                   JNDI:其他框架提供的容器
                   
           e. property 标签:配置数据源的单个配置标签 【其实就是JDBC所需要的的配置 包含:驱动配置,数据库地址,登录账号,密码等等】
                   e1.name:与JDBC的配置文件中的key一一对应 每个key对应一条property 标签语句
                   e2.value:底层获取 JDBC配置文件 对应key的值  格式是: ${变量名} 变量名为了代码的可读性一般和key是一样的
     
      -----------------------中间间隔-----[暂时还没有配置的标签]-----------------------------
       10.databaseIdProvider
      -----------------------中间间隔-----[暂时还没有配置的标签]-----------------------------
      
       11.【基于配置文件sql语句来实现 使用这个Mappers标签中的格式】
               
          
           a. mappers标签 :引入映射文件(sql语句的配置文件)的根标签
           b. mapper标签:mapper标签 一次有且只能有一个  使用哪一个Mapper接口 就配置哪个相对应的Mapper
               resource:引入单个映射文件的标识:与每一个映射文件自定义文件名相同【需要加后缀】
        11. 【基于注解配置sql语句 使用这个Mappers标签中的格式】
		   		
		   
		   	a.mappers标签:解释同上
		   	package属性:值是 你的数据访问层的哪个接口所在的是哪个包 需要注意的是:这里是包路径而不是文件路径 而且包路径可以不用那么精确 
		   	比如 准确包路径是: com.xxx.mapper   写成 com.xxx也可以  写成 com也可以【底层通过遍历找到】

怎么引入属性配置文件:
  


8.sql映射读取 方法一:指定多个mapper文件 方法二:使用包名

name:mapper文件所在的包名,包中所有xml一次性加载,要求:

1、mapper文件名需要和接口名一样
2、mapper文件和dao接口在同一目录下

实例如下


    
    




9.Sql片段

mapper文件中定义一个

 sql片段的语句 

怎么使用这个sql片段呢


目的:避免些重复的代码,减轻工作量

例如:mapper文件中这么写

    
    
        id,name,email,age
    
    
10.分页查询

步骤 :

1.加入pageHelper依赖

  com.github.pagehelper
  pagehelper
  5.1.0

2.在主配值文件中配置插件
 
        
    
3.Test代码中加入一行 PageHelper.startPage(pageNum,pageSize);
@Test
public void test04(){
    SqlSession sqlSession= MyBatisUtil.getSqlSession();
    StudentDao studentDao=sqlSession.getMapper(StudentDao.class);
    //分页查询的代码        
    PageHelper.startPage(1,3);
    List li=studentDao.selectPage();
    for(Student l:li){
        System.out.println(l);
    }
    sqlSession.close();
}

就可以自动完成分页查询了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/439560.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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