mybatis与jpa

文章比较了Mybatis和JPA在实际项目中的使用,Mybatis适合性能调优,输出SQL便于问题排查,但需手写SQL;JPA则适用于中小型项目,实体不全时启动即报错,提供API简化单表操作。同时介绍了两者在SpringBoot中的集成步骤和示例代码,包括条件查询和动态查询的实现。
摘要由CSDN通过智能技术生成

1、官方文档

mybatis:mybatis-spring –

jpa:https://springdoc.cn/spring-data-jpa/

应用文档 



jpa详解_java菜鸟1的博客-CSDN博客

JPA简介及其使用详解_Tourist-xl的博客-CSDN博客_jpa的作用

2、使用比较

mybatis一般用于互联网性质的项目,后期项目性能调优比较方便,配置输出日志,直接输出sql便于线上排查问题,之前一直被诟病的手写sql,单表的有些组件都封装了,如mybatis-plus、tkmybatis,如果实体和表字段没建立对应关系,实体和表都全了但是对应关系有缺失,缺失的不会返回,还有一种就是由于粗心导致的实体或者表不全,这种就麻烦些,程序运行才能发现。

jpa一般适用于中小型项目,配置输出日志后,输出sql不好排查,直接把表字段转义为不方便查阅的字段,不直观,相比于mybatis,如果实体少了不全,程序启动时就会报错,相当于提前暴露了问题。它提供api封装好了对单表的操作,直接调用即可,不需要额外引进组件。

3、实际使用

日常整合springboot组件三步骤,引依赖--配置配置文件--有需要扩展的可以扩展配置类,使用注解,调用api。

jpa

     <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
     </dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-jpamodelgen</artifactId>
</dependency>

 hibernate-jpamodelgen提供了一个方便获取实体类属性名的方法,当数据库或实体类的属性名改变后,不用去变动其他层代码。

Spring Jpa 自动根据实体类生成资源类_辉呀的博客-CSDN博客_jpamodelgen

实体类使用注解 

接口层

接着调用就完事了

条件查询

可参考:SpringDataJPA中使用Specification进行表连接多条件分页动态查询 - 代码先锋网

https://www.cnblogs.com/ydmysm/p/hhb_pageQuery.html

 

mybatis

  <!-- mybatis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
            <!-- mybatis启动器 -->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis.starter.version}</version>
            </dependency>
            <!--mybatis-plus启动器-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatis.plus.version}</version>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-core</artifactId>
                <version>${mybatis.plus.version}</version>
            </dependency>

配置xml

<select id="getAmacRegisterSearchResults" resultType="cn.go.dao.irmcenter.result.Asult">
		SELECT DISTINCT
			tiar.`id`,
			tiar.`name`,
			tiar.`xx_name`,
			tiar.`xx_num`
		FROM
			`ts_xx_xc_rxx` tiar
		<where>
			<if test="keyword != null">
			tiar.`name` LIKE #{keyword}
			OR tiar.`pxe` LIKE #{keyword}
			OR tiar.`xum` LIKE #{keyword}
			</if>
		</where>
	</select>
<update id="batchUpdateMs">
		UPDATE 
			`ts_xia` 
		SET 
			`name` = 
			<foreach collection="me" item="me" separator=" " open="CASE id" close="END">
				WHEN #{me.id} THEN #{me.name} 
			</foreach>, 
			`fans` = 
			<foreach collection="med" item="me" separator=" " open="CASE id" close="END">
				WHEN #{me.id} THEN #{me.fans} 
			</foreach>,
			`le` = 
			<foreach collection="me" item="me" separator=" " open="CASE id" close="END">
				WHEN #{me.id} THEN #{me.level} 
			</foreach>
		WHERE 
			`id` IN 
			<foreach collection="me" item="me" separator="," open="(" close=")">
				#{me.id} 
			</foreach>
	</update>
<update id="updateinfo" parameterType="xxxroupParam">
        update
        <include refid="xxx"/>
        <set>
            <if test="oor!=null">
                oor = #{oor},
            </if>
            <if test="updateDate!=null">
                update_date = #{updateDate},
            </if>
            <if test="status==null">
                status != -1
            </if>
            <if test="status!=null">
                status = #{status}
            </if>
            <if test="sequence!=null">
                sequence = #{sequence},
            </if>
            <if test="mt!=null">
                mt = #{mt}
            </if>
        </set>
        where id = #{mad}
    </update>
  <insert id="bind" parameterType="java.util.List">
        insert into <include refid="nod"/> (bd,nd,rd,opr,sts)
        values
        <foreach collection="list" item="item" index="index" separator=",">
            (#{item.bd},#{item.nd},#{item.rd},#{item.opr},#{item.st})
        </foreach>
    </insert>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值