Mybatis

数据库连接池:是一个容器,负责分配,管理数据库连接,允许应用程序重复使用

一个现有的数据库连接,而不是再重新建立一个,释放空闲时间超过最大空闲时间的

连接,来避免因为没有释放连接而引起的数据库连接遗漏。SpringBoot默认使用Hikari技术。

切换连接池,引入依赖即可。

lombok:一个Java类库,通过注解的形式自动生成构造器,getter/setter,equals等方法,并可以

自动化生成日志变量,简化Java开发,提高效率。

删除操作:

@Delete("delete from j_book where id=#{id}")
public void delete(Integer id);

使用预编译SQL性能更高:MySQL流程一般是SQL语法解析检查->优化SQL->编译SQL->执行SQL(前

三步在缓存中,执行SQL语句首先到缓存中检查,如果没有编译过,还是得执行前3步。采用预编译,缓存中拿到直接执行)。

更安全(防止SQL注入)

#{}在Mybatis中执行SQL时,会将#{..}替换为?,生成预编译sql,自动设置参数值(参数传递,都使

用#{..}。)

${}拼接SQL,直接将参数拼接在SQL语句中,存在SQL注入问题(如果对表名,列名进行动态

设置时使用。)

数据封装:实体类属性名和数据库表查询返回的字段名一致,mybatis会自动封装。如果不一致,

不能自动封装。

解决方案:1.给字段起别名,让别名与实体类属性一致:例如(create_time createTime)

2.通过@Results,@Rusult注解手动映射封装

例如:

@Results({
        @Result(column = "dept_id",property = "deptId")
})

3.开启Mybatis的驼峰命名自动映射开关 (建议使用这个)

mybatis.configuration.map-underscore-to-camel-case=true

XML映射文件:

映射文件的名称和Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下。

映射文件中的namespace属性为Mapper接口全限定名一致。

映射文件中SQL语句的id和Mapper接口中的方法名一致,并保持返回类型一致。

 

动态sql:

查询

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mybatis.mapper.UserMapper">
    <!--rusultType:单条记录所封装的类型-->
<select id="listselect" resultType="com.example.mybatis.pojo.User">
    select * from j_book
        <where>
    <if test="bookName !=null">
        bookName like concat('%',#{bookName},'%')
    </if>
   <if test="bookTypeId!=null">
       and bookTypeId=#{bookTypeId}
   </if>
        </where>
</select>
​
</mapper>
​
更新
<update id="updatedemo">
    update j_book
    <set>
        <if test="bookName!=null">bookName=#{bookName}, </if>
        <if test="author!=null">author=#{author}</if>
</set>
   where id=#{id}
</update>

删除

<foreach>标签:

collection:遍历的集合

item:遍历出来的元素

separator:分隔符

open:遍历开始前拼接的sql片段

close:遍历结束后拼接的sql片段

<delete id="deletes">
    delete from j_book where id in
    <foreach collection="ids" item="id" separator="," open="(" close=")">
      #{id}
    </foreach>
</delete>

sql&include,sql抽取语句,include引用

<sql id="comselect">select  id, bookName,author,sex,price,bookTypeId,bookDesc,bookNumber,image from j_book</sql>
<select id="listselect" resultType="com.example.mybatis.pojo.User">
    <include refid="comselect"></include>
        <where>
    <if test="bookName !=null">
        bookName like concat('%',#{bookName},'%')
    </if>
   <if test="bookTypeId!=null">
       and bookTypeId=#{bookTypeId}
   </if>
        </where>
</select>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值