`

Mybatis 入门

    博客分类:
  • java
阅读更多



 程序执行顺序:

 

 

 

 

 

 

 

1.Mybatis Generator

  作用:根据数据库中的表自动生成实体类(类中属性与表的字段一一对应),映射文件等文件

 

2.Example类

   作用: 拼接sql语句,方便灵活          

 

3.  and or联合查询如何使用Example?

例如:

select count(*) from user Where (Id=1 and name="jack") or (id=2 and Name="Tom")

 

代码:

UserExample userExample=new UserExample();   

UserExample.Criteria criteria=example.createCriteria();

Criteria.andIdEqualTo(1);                          //给查询条件1赋值

Criteria.andNameEqualTo("jack");              //给查询条件1赋值

 

UserExample.Criteria criteria2=example.createCriteria();

Criteria2.andIdEqualTo(2);                        //给查询条件2赋值

Criteria2.andNameEqualTo("Tom");            //给查询条件2赋值

 

example.or(criteria2);                               //or映射

userPadMapper.countByExample(userPadExample);  //执行查询

 

 

4.每个数据库字段,mybatis Generator会自动产生一堆Example方法

4.1方法名的格式与含义

以andIdIsNull() 为例

方法名的格式: and + 属性名+含义

方法名的含义: 判断Id是否为空

 

4.2属性不同,但是自动产生的方法都相似的

,以属性id为例,看看自动产生的方法一般都有哪些

 

andIdIsNull()                               //判断是否为空

andIdIsNotNull()                          //判断是否不为空

 

andIdEqualTo(Integer value)        //判断Id是否与value相等

andIdNotEqualTo(Integer value)     //判断Id是否与value不相等

 

andIdGreaterThan(Integer value)                 //判断Id是否大于value

andIdGreaterThanOrEqualTo(Integer value)  //判断Id是否大于等于value

 

andIdLessThan(Integer value)                         //判断Id是否小于value

andIdLessThanOrEqualTo(Integer value)          //判断Id是否小于等于value 

andIdIn(List<Integer> values)                         //判断Id是否和List中某个值相等

andIdNotIn(List<Integer> values)                    //判断Id的值是否与List中任何一个值都不相等

 

andIdBetween(Integer value1, Integer value2)   //判断Id是否在2个值中间

andIdNotBetween(Integer value1, Integer value2)  //判断Id是否不在2个值中间

 

 

 5.criteria查询是mybatis提供的一种更加面向对象的查询方式



 

 

Criterion是最基本,最底层的Where条件

Criteria包含一个Cretiron的集合,每一个Criteria对象内包含的Cretiron之间是由AND连接的,是逻辑与的关系。

 Example内有一个成员叫oredCriteria,是Criteria的集合,就想其名字所预示的一样,这个集合中的Criteria是由OR连接的,是逻辑或关系。oredCriteria就是ORed Criteria。

 

 6.Mybatis的动态sql本质就是拼接sql语句,满足条件就加在sql语句上,不满足条件就不加

   看个实际例子:

   用户查询的时候,有很多查询条件

    select * from user                               

    select * from user where id=1;              

    select * from user where name="张三"  

    select * from user where name="张三" and id=2   

    select * from user where name="张三" and id=2 and age=19

     ........

    ........

 

    不可能针对每一种情况,程序员都自己写对应的sql语句,需要一种更便捷的方法,就是动态sql

   代码:

   

  selec* from user  <where>

        <if  test="id!=null">

            and id=#{id}  </if>

        <if test="name!=null">

            and name=#{name} </if>

         <if test="age!=null">

            and age=#{age} </if>

         <if test="sex!=null">

            and sex=#{sex} </if>

         ....

    </where>

   解释: 1. <where>标签,如果后面有查询条件,那么会在selec* from user 后面添加一个where 变成 selec* from user where

            2. if标签中的test是判断条件,如果满足条件,就将标签中的内容添加到

              selec* from user where后面,不满足就不添加,因此,用户输入哪种查询条件,就会自动生成相应的sql语句

           注意:where语句会自动省略第一个and

         

 

 

  • 大小: 61.8 KB
  • 大小: 34.9 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics