ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

mybatais基础

2020-01-17 13:03:47  阅读:307  来源: 互联网

标签:mapper 映射 文件 基础 参数 sql mybatis mybatais


一,mybatis开发基于XML文件获取sqlSessionFactory方式进行查询

 

 

在mybatis框架中通过基于XML文件获取sqlSessionFactory方式进行查询,有两个重要配置文件,两个重要对象。

<mappers>

    <mapper>resource="org/mybatis/example/***Mapper.xml" />

    <package    name="包名"    />

</mappers> 。

 

***Mapper.xml文件,查询映射文件,里面书写sql语句。

文件,mybatis-conf.xml  全局配置文件,定义连接对象等,映射的mapper文件。定义映射的mapper文件使用:

对象,sqlSessionFactory,sqlSession工厂,产生 sqlSession对象。 sqlSession,数据库连接对象,可以理解为对connection的封装。

 

 

二,mybatis开发基于 mapper接口的开发

 

 

    1,搭建开发环境,mybatis jar 包,mysql连接包,log4j的包。

    2,创建mybati-config.xml,创建sqlSessionFactory对象。

   3,获取sqlSession对象。

   4,创建sql映射文件,EmployeeMapper.xml.  编写sql语句,在注册到mybati-config.xml中。

   5,编写Mapper接口。

   6,完成两个绑定。

      sql映射文件与mapper接口的绑定,    sql映射文件 namespace内为mapper接口的全类名。

        mapper接口中方法与sql映射文件中的sql语句的绑定,  sql接口中方法名与 sql映射文件中sql语句的id相同。

    7,获取mapper接口的代理实现类对象。                          sqlSession.getMapper(EmployeeMapper.class)

 

三,mybatis参数传递的几种类型和接收方式

传递的参数为一个普通类型参数(int,integer,string),在接收参数#{随便}内随便写。

参数个数大于一个,mybatis后台会将参数封装为一个map,map的key为(0,1,2,.....n-1或者param1,param2,param3,.......paramN)。获取参数时通过,0,1,2,3或者param1,param2进行获取。

命名参数,当参数个数大于一个时,使用0,1,2等索引获取参数,不太直观,可以通过@param(“XXX”)注解来对参数进行修饰,修饰后多个参数在被封装为Map后,Map的key为param注解的XXX。

POJO对象,当传递的参数为一个POJO对象时,#{}内取值为POJO对象的属性。

Map,我们可以将参数封装到Map中进行传值,#{}内取值即为Map的key。

传递的参数为Collection(List,Set),Array(数组),后台也会将参数封装为一个Map进行传递,如果为Collection,key为collection,如果为List,key为list,  如果为Array,key为array。建议使用@param注解对参数进行命名,提高代码的阅读行。

参数获取方式,${},#{}。其中#{}是sql预编译,参数的位置编译为占位符,${}是直接将参数拼接到sql语句中,有sql注入风险。#{}  预编译只能用在where条件,having过滤,limit分页后,其他位置必须使用${}进行sql拼接。

标签:mapper,映射,文件,基础,参数,sql,mybatis,mybatais
来源: https://www.cnblogs.com/hbnp/p/12205251.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有