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

MyBatis框架

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

MyBatis框架

一、什么是MyBatis?

       MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apachesoftware foundation迁移到了google code,并且改名为MyBatis 。2013年11日转移到Github。

可以看作是jdbc的一个高级封装

二、解决的主要问题?

 减轻使用JDBC的复杂性,不用编写重复的创建Connetion ,Statement ;不用编写关闭资源代码。

直接使用java对象,表示结果数据。让开发者专注SQL的处理。其他分心的工作由MyBatis代劳。

SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。

提供映射标签,支持对象与数据库的ORM字段关系映射;提供对象关系映射标签,支持对象关系组件维护。

三、使用步骤 0 创建数据库和表 1 新建一个maven项目 2 修改pom.xml文件    1)加入mybatis依赖和MySQL驱动等
    
    
        
            org.mybatis
            mybatis
            3.5.1
        

        
        
            mysql
            mysql-connector-java
            5.1.46
        

    
  2)在build标签中加入资源插件

        
        
            
                src/main/java
                
                    ***.xml
                
                false
            
        
    
3 根据数据库表创建实体类

 4 创建dao接口,定义操作数据库的方法

 5 创建mapper文件(.xml)

 Mybatis框架推荐是把sql语句和java代码分开

推荐mapper文件:定义和dao接口在同一目录下,并且名字和dao接口的名字一致,一个表对应一个mappper文件

 mapper文件内部主要介绍:






mapper文件中直接写sql语句即可

标签的属性出现的。表示结果类型,mysql执行sql语句,得到java对象的类型。它的值有两种 1)java的全限定名称 2) 起别名

1、resultType

     1) java 的全限定名称

resultType :现在使用java类型的全限定名称。表示的意思mybatis执行sq1,把ResultSet中的数据转为student类型的对象。 mybatis会做以下操作:

1.调用com.zhiyou.mybatis.entity.Student的无参数构造方法,创建对象。

Student student = new student();   //使用反射创建对象

2.同名的列赋值给同名的属性。

student.setId( rs.getInt("id"));

student.setName(rs.getString("name"));

3.得到iava对象,如果dao接口返回值是List集合,mybatis把student对象放入到List集合。

所以执行Student mystudent = dao.selectById(1001);得到数据库中 id=1001这行数据,

这行数据的列值,赋给了mystudent对象的属性。你能得到mystudent对象。就相当于是id=1001这行数据。

    2)使用别名

mybatis提供的对java类型定义简短,好记名称。

自定义别名的步骤:

1) 在mybatis主配置文件,使用typeAliase标签声明别名

2)在mapper文件中, resultType="别名"

 也可以使用     这样就会给该包下面所有类起别名,默认为类名开头小写

2、resultMap

常用于列名和属性不同的情况,列名和属性名相同也可以使用

 八、多表联查 1、多对一 或者 一对一

现有两张表,学生表和班级表,学生表与班级表的对应关系是多个学生对应一个班级,或者也可以说一个学生对应一个班级

实体类

 方式1:类似子查询方式 

    

        
            
            
            
        
    
    
    
        select * from tab_class where cid=#{cid}
    

 方式2:联合查询方式

    
        
        
        
        
        
        
            
            
            
        
    

    
        select * from tab_class where cid=#{cid}
    
    
        select * from tab_stu s,tab_class c where c.cid=#{cid} and s.scid=c.cid
    
九、动态sql

什么是动态sql:同一个dao方法,根据不同的条件可以表示不同的sql语句,主要是where部分有变化,使用mybatis提供的标签,实现动态sql的能力,主要讲if,where,foreach,sql

1、if标签 

语法如下:



    select * from student 
    
        
            score >=#{score}
        
    
3、foreach标签

使用foreach可以遍历集合和数组,一般用在in语句中


    select * from student
    
        
            and sex=#{sex}
        
        
            or score=#{score}
        
        
            and sdy=#{sdy}
        
        
            or sname=#{sname}
        
    
6、choose标签



    select * from student


在核心配置文件中添加配置


       ....
       
       
   

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

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

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