Mybatis框架总结

姓名 连嘉玮 学号 16040120089

转自:http://www.jianshu.com/p/4509cb9d266f?utm_campaign=hugo&utm_medium=reader_share&utm_content=note&utm_source=qq

有删节

【嵌牛导读】:mybatis专注于SQL本身,是一个足够灵活的Dao层解决方案,适用于性能要求较高或者需求多变的互联项目

【嵌牛鼻子】:增加 更新 删除 都是无返回值 编译速度块 执行效率高

【嵌牛提问】:Mybatis有什么优缺点?

【嵌牛正文】:

编程思想的培养?

1.什么时候需要传参?

add(对象 引用) update(对象 引用) delete(int id) delete(对象 引用) findById(int id)

2.什么时候需要返回值?

List<对象> findAll() , 对象 findById()

3.返回值改为int类型 传参+返回值一起写 谁执行效率高?

int delete(int id) 代码会多 相对来说 返回值为int 需要判断

void delete(对象) 这样效率好 代码少

总结: 增加 更新 删除 都是无返回值 编译速度块 执行效率高

mybatis框架的优缺点:

优点:

(1)与jdbc相比,减少了50%以上的代码量.

(2)最简单的持久化框架,小巧并简单易学

(3)SQL代码从程序代码中彻底分离,可重用

(4)提供xml标签 支持编写动态sql

(5)提供映射标签,支持对象与数据库的ORM字段映射

缺点:

(1)SQL语句编写工作量大,对开发人员有一定要求

(2)数据库移植性差

mybatis专注于SQL本身,是一个足够灵活的Dao层解决方案,适用于性能要求较高或者需求多变的互联项目

MyBatis的开发步骤:

1.下载mybatis.jar包并导入工程

2.编写MyBatis核心配置文件(configuration.xml)

3.创建实体类 --entity

4.dao层-SQL映射文件(mapper.xml)***

5.创建测试类

读取核心配置文件mybatis-config.xml

创建SqlSessionFactory对象,读取配置文件

创建SqlSession对象

调用mapper文件进行数据操作

提交事物(可选)

三者的作用域:

SqSessionFactoryBuilder

用过即丢,推荐作用范围:方法体内

SqlSessionFactory

最佳作用范围:应用的全局作用域

生命周期与应用的生命周期相同

SqlSession

线程级

一个request请求期间

面试题: jdbc hibernate mybatis 区别

jdbc: 优点: sql语句非常灵活 可移植性最强(相对来说).

缺点: 代码量多 冗余 java代码和sql耦合在一起 不利用代码维护.

hibernate: 优点:完全面向对象写法 利用HQL语句 完全脱离java代码和sql.

缺点: 全封装的框架 底层代码出问题 不好调试 可移植性差.

mybatis: 优点: 半封装的框架 脱离java代码和sql 可移植性非常强 应用非常灵活.

缺点:大量写sql语句(不包含java代码 ) 代码量多.

Mybatis框架中最重要的是就是子配置文件中的SQL语句

List 返回值就是T 默认对象存到数组([])

List> 返回值就是第一个泛型的类型 集合类默认存集合({})

展示sql使用log4g

主配置文件

"[http://mybatis.org/dtd/mybatis-3-config.dtd"];>

   

   

   

       

       

   

   

      -----默认的运行id

        ---运行id

            ---事务管理器配置

            ---数据源配置

               

               

               

               

           

       

   

   

   

       

       

       

   

子配置文件

"[http://mybatis.org/dtd/mybatis-3-mapper.dtd"];>

    -----添加

        insert into dept(dname,loc) values(#{dname},#{loc})

   

   

   

   

    ----更新

      update dept set dname=#{dname},loc=#{loc} where deptno=#{deptno}

   

   

    -----删除

      delete from dept where deptno=#{deptno}

   

   

   

   

   

   

   

   

   

数据库中字段和实体类中的属性不一致 写SQL要起别名 都是在子配置文件

第一种方法

select u.id u_id,u.name u_name,u.age u_age from user u

id name age数据库中字段名

u_id u_name u_age 是实体类中的属性

第二种方法

 

 

 

 

 

表关系

首先,建立三张表 user info book

建立实体类

public class Book {

    private Integer b_id;

    private String b_nanme;

    private Info info;

public class Info {

    private int i_id;

    private String i_work;

public class User {

  private int id;

  private String name;

  private int age;

  //对一

  private Info info;

  //  对多

  private Set book;

 

省略上面的set get方法以及toString方法

对一关系

在UserMapper.xml中

 

 

 

测试

@Test

    public void testsel1() throws IOException{

        //加载主配置文件

                Reader reader=Resources.getResourceAsReader("mybatis-config.xml");

                //创建SqlSessionFactoryBuilder

                SqlSessionFactoryBuilder sessionFactoryBuilder=new SqlSessionFactoryBuilder();

                //创建session工厂

                SqlSessionFactory sessionFactory=sessionFactoryBuilder.build(reader);

                //利用工厂开始session

                SqlSession session=sessionFactory.openSession();

                List list=session.selectList("user.findall");

                System.out.println(list);

       

    }

模糊查询语句

mybatis框架就是连接数据库,做增删改查,我觉得最重要的就是sql语句,只要sql语句正确,其他的问题也就都不是问题了,在ssm项目中都不用单独建立mybatis的配置文件,之间在Spring的配置文件中写就可以,Spring中可以很好的整合mybatis框架. 重点是mapper文件 重点是mapper文件重点是mapper文件

你可能感兴趣的:(Mybatis框架总结)