Java框架之MyBatis框架

Mybatis框架是相对于优化dao层的框架,其有效的减少了频繁的连接数据库(在配置文件xml中进行配置),将sql语句与java代码进行分离(写在XXXXmapper.xml文件中,一个表对应一个xml文件),有效的处理了各种条件(定义了输入类型pojo)并且将结果又映射到java对象中(定义了输出类型)。需要注意的是每个表对应的xml文件的地址需要在配置文件中进行配置(可以指引整个文件夹),当使用动态代理的接口mapper时,需要注意好其的四个规范!并且其可以将查询及输出结果封装到一个类,并提供了if、where、foreach标签进行优化。

一、输入类型优化:

开发中通过可以使用pojo传递查询条件。

查询条件可能是综合的查询条件,不仅包括用户查询条件还包括其它的查询条件(比如查询用户信息的时候,将用户购买商品信息也作为查询条件),这时可以使用包装对象传递输入参数。

包装对象:Pojo类中的一个属性是另外一个pojo。

需求:根据用户名模糊查询用户信息,查询条件放到QueryVo的user属性中。

[url=][/url]
packagecom.oracle.pojo;publicclassQueryVo {   privateUser user;   publicUser getUser() {        returnuser;    }   publicvoidsetUser(User user) {        this.user =user;    }    @Override   publicString toString() {        return"QueryVo [user=" + user + "]";    }    }[url=][/url]

二、输出类型优化:

  resultType可以指定将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功。

        如果sql查询字段名和pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系 ,resultMap实质上还需要将查询结果映射到pojo对象中。

        resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询。

三、动态Sql:

通过mybatis提供的各种标签方法实现动态拼接sql:if/where/foreach

[url=][/url]
                    select*from user                [url=][/url]

Sql片段:sql中可将重复的sql提取出来,使用时用include引用即可,最终达到sql重用的目的。

    如果要使用别的Mapper.xml配置的sql片段,可以在refid前面加上对应的Mapper.xml的namespace。

foreach标签:向sql传递数组或List,mybatis使用foreach解析。

四、关联查询:

1、一对一查询:

[url=][/url]
                                                                                    [url=][/url]

2、一对多查询:

[url=][/url]
                                                                                                                                        [url=][/url]

[url=][/url]
publicclassUser {   privateInteger id;   privateString username;   privateString birthday;   privateString sex;   privateString address;   privateList list;//一对多,得list[url=][/url]

五、逆向工程:

1、导入:

2、修改:

在generatorConfig.xml中配置Mapper生成的详细信息:

  注意:

  • 修改要生成的数据库表
  • pojo文件所在包路径
  • Mapper所在的包路径[url=][/url]
                                                                                                                                                                                                                                                                                                            
            
       

    [url=][/url]

3、生成逆向代码:

运行GeneratorSqlmap.java!

生成pojo、mapper!

你可能感兴趣的:(java)