springBoot+mybatis参考笔记

什么是springBoot?

用来简化spring应用的初始化搭建以及开发过程,使用特定的方式来进行配置(properties或yml文件)

为什么使用springBoot?

减少开发,配置简单,没有单独的Web服务器需要。这就意味着你不在需要启动Tomcat或其他任何东西,项目可独立运行,无需外部依赖Servlet容器。

SpringMVC

控制器:只负责请求和相应,不涉及具体的业务逻辑,具体的业务逻辑调用Serivice层返回结果。

服务层:只负责具体的业务逻辑判断处理,涉及到底层数据库的操作,一律调用dao来完成。

Dao层:(数据持久化层)只负责做数据持久化的操作,(如:增、删、改、查)

M 代表 模型(Model)
模型是什么呢? 模型就是数据,就是 dao,bean

V 代表 视图(View)
视图是什么呢? 就是网页, JSP,用来展示模型中的数据

C 代表 控制器(controller)

Mybatis

什么是Mybatis?

Mybatis是支持普通sql查询,储存过程和高级映射的优秀持久层框架,他是一个半自动化框架,他内部封装了JDBC,开发时只需要关注sql语句本身,不需要花费精力去处理加载驱动,创建连接、创建statement等复杂的过程。Sql语法写在xml文件中。

#{}和${}的区别是什么?

#{}是预编译处理,${}是字符串替换,mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatment的set方法来赋值;

Mybatis在处理 时 , 就 是 将 {}时,就是将 {}替换成变量的值。

使用#{}可以有效的防止sql注入,提高系统安全性。

mybatis的好处?
内部封装了JDBC ,不需要在加载驱动,创建连接,创建statement等一系列的复杂过程,slq代码写在xml文件中。

**缺点:**Mybatis框架sql语句依赖数据库,导致数据库移植性差,不能随意更换数据库。

Mybatis标签的使用

where标签:

<!-- 查询学生list,like姓名,=性别 -->     
<select id="getStudentListWhere" parameterType="StudentEntity" resultMap="studentResultMap">     
    SELECT * from STUDENT_TBL ST      
    <where>     
        <if test="studentName!=null and studentName!='' ">     
            ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%')      
        </if>     
        <if test="studentSex!= null and studentSex!= '' ">     
            AND ST.STUDENT_SEX = #{studentSex}      
        </if>     
    </where>     
</select>   

参数studentName为null或’’,则或导致此sql组合成“WHERE AND”之类的关键字多余的错误SQL。
这时我们可以使用where动态语句来解决。这个“where”标签会知道如果它包含的标签中有返回值的话,
它就插入一个‘where’。此外,如果标签返回的内容是以AND 或OR 开头的,则它会剔除掉。

set+if标签:

<!-- 更新学生信息 -->     
<update id="updateStudent" parameterType="StudentEntity">     
    UPDATE STUDENT_TBL      
    <set>     
        <if test="studentName!=null and studentName!='' ">     
            STUDENT_TBL.STUDENT_NAME = #{studentName},      
        </if>     
        <if test="studentSex!=null and studentSex!='' ">     
            STUDENT_TBL.STUDENT_SEX = #{studentSex},      
        </if>     
        <if test="studentBirthday!=null ">     
            STUDENT_TBL.STUDENT_BIRTHDAY = #{studentBirthday},      
        </if>     
        <if test="classEntity!=null and classEntity.classID!=null and classEntity.classID!='' ">     
            STUDENT_TBL.CLASS_ID = #{classEntity.classID}      
        </if>     
    </set>     
    WHERE STUDENT_TBL.STUDENT_ID = #{studentID};      
</update> 
当在update语句中使用if标签时,如果前面的if没有执行,则或导致逗号多余错误。使用set标签可以将动态的配置SET 关键字,和剔除追加到条件末尾的任何不相关的逗号。

springBoot常用注解

启动类注解:
@springBootAppcation :表示这是springBoot的启动类
它相当于下面三个注解一起使用:

@springBootConfiguration表示这是spring的配置类

@EnableAutoConfiguation开启自动配置的注解

@componentScan(扫描包)扫描某个路径下的Controller、service
@mapperScan:指定要扫描mapper类的包路径

controller注解:
@restController = @responseBody + @Controller:表明当前类是一个返回JSON格式的控制器类
@RequestMapping:表示类中的所有相应请求方法都是以该地址作为父路径
@Api:对类的说明
@Validated:返回错误的状态码和提示显示
200:请求成功
400:请求的语法错误
401:表示发送的请求需要验证
403:发送的请求须有认证
404:服务器无法找到指定资源
500:服务器在执行请求时发生了错误
@ApiOperation:此注解是swagger里的,用来构建API文档的
@GetMapping:通过浏览器的地址栏输入地址 所访问的url都是get请求
@postMapping
@deleteMapping
@putMapping
@responseBody:将方法的返回值,以特定的格式写入到resonse的body区域,进而将数据返回给客户端。

service层注解:
@Service 作用:把当前的类,初始化成一个Spring的bean对象(默认是单例),并且添加到spring的Bean容器中去(Map)
@autowired从spring容器中,查找类型为specialtyService的bean对象。

 SpecialtyService a = new SpecialtyServiceImpl();
​  beanContainer.put(specialtyService.class,a);
public class SpecialtyServiceImpl implements SpecialtyService {  方法体  }
@autowired
private SpecialtyMapper specialtyMapper;

@slf4j:Lombok里提供的日志功能,默认变量名为log

实体层:
@data:提供get和set以及toString方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

menglc123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值