mybatis框架的xml映射文件常用查询指南

网友投稿 214 2023-01-23

mybatis框架的xml映射文件常用查询指南

使用mybatis框架时,那必然会有对数据库的查询语句的编写,所以这篇文章希望可以帮助到你。

什么是Mybatis框架?

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

如何使用?

pom文件依赖

org.mybatis.sDjduYDapring.boot

mybatis-spring-boot-starter

2.1.3

yml文件配置,这里匹配 resource/mapper/ 路径下的映射文件。

mybatis:

mapper-locations: classpath:mapper/*.xml

在xml文件中绑定持久层接口和实体对象

<resultMap type="com.flamelephant.fabricmgt.entity.po.Host" id="HostMap">

mapper标签中的namespace属性指定的是我们持久层接口的项目路径

resultMap是Mybatis最强大的元素,它可以将查询到的复杂数据(比如查询到几个表中数据)映射到一个结果集当中

resultMap标签的type属性是我们要映射的实体对象的项目路径,id为resultMap的唯一标识。

resultMap中的result标签是实体和数据库表字段的绑定,其中property属性为实体对象的属性名,column为数据库的字段名,jdbcType是字段的类型。

xml映射文件的sql编写

通过实体作为筛选条件查询

select id,

host_name,

ip,

user_name,

pass_word,

state,

tag,

gmt_created,

gmt_modified

from host

and id = #{id}

and host_name like CONCAT('%', #{hostName}, '%')

and ip like CONCAT('%', #{ip}, '%')

and user_name = #{userName}

and pass_word = #{passWord}

and state = #{state}

and tag = #{tag}

and gmt_created = #{gmtCreated}

and gmt_modified = #{gmtModified}

/if>

id="queryAll"为持久层接口的抽象方法名

resultMap="HostMap" 指定查询结果接收的resultMap的结果集。

持久层接口绑定

/**

* 条件查询

*

* @param host 条件查询

* @return 对象列表

*/

List queryAll(Host host);

通过主键批量删除

delete

from host

where id in

#{id}

以上sql语句的原型为

delete from host where id in(1,2,3)

foreach标签中的属性理解

collection属性为接收的数据源

item为集合中的每一个元素

index :用于表示在迭代过程中,每次迭代到的位置

open :表示该语句以什么开始

separator :表示在迭代时数据以什么符号作为分隔符

close :表示以什么结束

持久层接口抽象方法

/**

* 批量删除主机

*

* @param hostIds 主机id数组

* @return Integer

*/Integer deleteHostByIds(@Param("hostIds") Long[] hostIds);

批量新增

insert into host_and_group(host_group_id, host_id)

values

(#{hostGroupId}, #{hostId})

持久层接口方法

/**

* 将多个主机添加至一个主机组

*

* @param request

* @return Integer

*/Integer addHostList(HostAndGroupRequest request);

我是元素封装在一个对象中,所以这个对象里有批量增加的元素,则直接可以传一个对象。

总结

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:分析Java是&quot;按引用传递&quot;还是&quot;按值传递&quot;
下一篇:springboot枚举类型传递的步骤
相关文章

 发表评论

暂时没有评论,来抢沙发吧~