概述
搬砖笔记: Spring,JDBC ,MVC , Mybaits整合
本章内容的介绍:
## 第一部分:综合配置Spring,JDBC ,MVC , Mybaits相关的配置文件
## 第二部分:理顺Spring,JDBC ,MVC , Mybaits之间的关系;
## 第三部分:整合项目执行查询,高级查询 【重点】
## 第四部分:学习 Mapper.xml取代dao层之后 高级查询的语法
## 第五部分:传统Dao层高级查询的语法案例;
第一部分:综合配置Spring,JDBC ,MVC , Mybaits相关的配置文件
配置相关文件以及流程,在第三部分,有说明,需要结合第二部分的关系图进行理解 ;深层次的代码读懂,需要看第四伍部分里面的代码截图,以及相关注释;
最佳的学习方式是,结合本章的案例项目,进行执行操作,重复敲出来代码2遍,增加理解;或者,整合项目知识点,重新执行写一个新的项目;增加对知识的掌握;
第二部分:理顺Spring,JDBC ,MVC , Mybaits之间的关系;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ph6S9Rcn-1596202882868)(C:UsersAdministratorDownloads未命名文件.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wbtPkhnN-1596202882872)(C:UsersAdministratorAppDataRoamingTyporatypora-user-imagesimage-20200729221503546.png)]
第三部分:整合项目springMvc执行流程
-
第一步:首先创建一个web动态项目,
-
按照项目的技术需求,将所需的jar包导入进来 ;
-
按照项目搭建的需求 ,配置相关的配置文件,xml。properties。以及log4配置文件,
-
检查配置文件中,与web.xml进行关联,关联启动spring,以及springmvc的xml服务,设置过滤器过滤字符集
-
检查spring配置,和springmvc配置文件里面的内容,
-
spring:管理数据库配置文件,获得连接池对象,以及配置 Mybatis的xml文件;
springMVC:静态资源,扫描包路径,mvc全注解支持,视图解析,文件解析,拦截器,
-
从上期项目中,以及课程中,copy获得相关项目结构中的板块,比如前端显示,sql数据库文件,以及实体类字段模板;
-
创建MVC的三层架构,使用Mapper替代dao层 ;
-
配置Mapper里面的接口,和 Mapper.xml文件,封装sql语句;
-
创建测试类,执行测试方法 ;
-
测试类执行成功之后,写Controller类,执行控制器控制 ;同步写 UI前端form请求表单内容 ;
-
整体测试,UI发送请求,controller处理,service处理逻辑,Mapper执行查询 ,整个过程,以及数据的显示效果‘
本章节知识点:
【1】–》 多个知识点之间的融合关系
【2】–》Mybatis配置文件Mapper.xml里面,执行高级查询的语法结构 ;
第四部分:学习 Mapper.xml取代dao层之后 高级查询的语法
在mvc结构中,serviceImpl实现了Iservice接口中的方法之后,需要调用数据库操作的方法,进行CRUD操作;此时,因为Mapper取代了dao的结构, 所以:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FKYjyyyH-1596202882873)(C:UsersAdministratorAppDataRoamingTyporatypora-user-imagesimage-20200729210229550.png)]
EmpMapper.java 是一个接口文件 ; EmpMapper,xml是mybatis的一个配置文件; sql语句封装在xml文件里面;但是,serviceImpl在调用方法的时候,使用的是一个 接口装箱操作的实现类的方法; 方法直接传参数,调取的是EmpMapper.xml里面配置的sql执行语句,以及返回值 ;
/**这里模拟的就是,serviceImpl在使用Mybaits的时候,使用spring注入的方式,获得Mapper的接口的对象;*/
@Autowired
private EmpMapper mape;
@Override
public List<Emp> loadAll() {
//查询所有的信息 -- 注意这里的查询方法用的字段,是Mapper.xml里面的ID,系统直接从xml里面查找ID执行sql语句
List<Emp> list = mape.LoadAll();
return list;//返回查询的值
}
<mapper namespace="cn.mybatis.mapper.UserMapper">
<select id="loadOne" parameterType="int" resultType="cn.mybatis.domain.User">
select * from user where id = #{id}
</select>
<select id="loadAll" resultType="cn.mybatis.domain.User">
select * from user
</select>
<delete id="delete" parameterType="int" >
delete from user where id = #{id}
</delete>
<!-- 添加需要一个对象 User -->
<insert id="add" parameterType="cn.mybatis.domain.User">
<!-- insert into user(id, password, age) values(#{id}, #{password}, #{age}) -->
insert into user(id, username , password, age) values(#{id}, #{username}, #{password}, # {age})
</insert>
<update id="update" parameterType="cn.mybatis.domain.User">
update user set id = #{id} , username = #{username} ,password = #{password} ,age = #{age} where id = #{id}
</update>
</mapper>
<!--
上面这段代码,就是Mapper.xml里面,使用和执行的原型模板;
-->
/**
* 这里展示的代码,就是接口里面,调用xml里面方法的原型模板;
*/
void add(User user);
/**
* 更新一个user
*/
void update(User user);
/**
* 删除一个user
*/
void delete(int id);
/**
* 得到一个user
*/
User loadOne(int id);
/**
* 得到所有user
*/
List<User> loadAll();
下面这个模型,展示的是Mapper.xml里面的 高级查询的案例:
笔记:
在xml语句里面,使用where语句可以用来拼接sql语句的字段; <where 同时表示拼接一个where>
同时判断可以使用if语句,if语句可以判断传递过来的参数
<if test="deptno != null">
使用if语句的时候,里面判断的参数需要放在test里面进行表示,
并且对象里面的参数,直接使用参数字段直接取值,无需对象.属性
include标签,可以抽取sql语句,在 where语句之外;include和sql标签是一对使用;
练习的时候,建议先一个一个条件的测试,测试完毕之后,再执行对条件的抽取;抽取的include和sql标签是一对使用;
<choose>标签类似java里面的switch 和case的功能,进行选择性匹配;用法如下;
<include refid="deptno"></include>
<sql id="deptno">
<if test="deptno !=null"><!-- 数字的值:判断null Integeer
and deptno=#{deptno}
</if>
</sql>
<mapper namespace="cn.wulang.Mapper.EmpMapper"> <!-- 这个是接口的路径地址,接口里面的方法,就是这个xml里面的方法,执行逻辑在这里 -->
<!---->
<!-- 高级条件查询,需要拼接sql语句,并且做非空判断; -->
<select id="LoadCdon" parameterType="emp" resultType="emp">
select * from emp
<where><!--系统默认在拼接的时候 在上一句的 后面自动增加 空格 和 一个where-->
<include refid="deptno"></include><!-- 将代码提取出去 下面的sql里面 用ID识别 -->
<include refid="ename"></include><!-- 将代码提取出去-->
<!-- 这个不提取出去 做不提取的展示案例 -->
<if test="address !=null and !''.equals(address.trim())">
and address like CONCAT('%',trim(#{address}),'%')
</if>
<!-- 最后一个判断条件是多条件查询 区间-->
<if test="sal!=null">
<!--if判断的时候,判断条件必须写在 text里面才能被系统编译-->
<choose>
<!-- 页面传递过来的是一个3000的值 下面开始拼接数字在3000以内的工资条件;工资是表内的数据-->
<when test="sal == 3000">
and sal <= 3000
</when>
<when test="sal == 5000"><!-- 当你选择3000~5000档位的时候-->
and sal <= 5000 and sal > #{sal}-2000
</when>
<when test="sal == 8000"><!-- 当你选择3000~5000档位的时候 -->
and sal <= 8000 and sal > #{sal}-3000
</when>
<when test="sal == 8001"><!-- 当你选择8000以上档位的时候-->
and sal > #{sal}
</when>
</choose>
</if>
</where>
</select>
<!--下面的sql标签里面的语句,是从上面代码里面提取出来的代码,执行的时候按照include的位置执行,以 ID进行识别
所以,可以提取多个sql出来,使得这个代码结构美观-->
<sql id="deptno">
<if test = "deptno != null" >
and deptno = #{deptno}
</if>
</sql>
<sql id="ename">
<if test="ename !=null and !''.equals(ename.trim())">
and ename like CONCAT('%',trim(#{ename}),'%')
</if>
</sql>
</mapper>
第五部分:传统Dao层高级查询的语法案例;
//使用工具类,获得动态的sql语句;通过方法,返回一个sql语句;
public String getSQL() {
String sql = ""; //原始查询的sql语句,基础 ,此处使用“”代替,后面的条件,使用拼接的方式拼接上去;
//条件1判断
if (positiontype != null && !this.positiontype.trim().equals("")) {
//判断条件是否是null或者空字符串,然后拼接下面的sql字段
sql += " and positiontype = "+ positiontype+" ";
//这是对符合条件的sql进行语句的拼接
}
//条件2判断;
if (this.title!= null && !this.title.trim().equals("") ) {
//判断条件是否是null或者空字符串,然后拼接下面的sql字段
sql += " and title LIKE '%"+this.title+"%'";
//判断条件成立的时候,进行sql语句的拼接,注意空格要留
}
return sql;
}
//条件2判断;
if (this.title!= null && !this.title.trim().equals("") ) {
//判断条件是否是null或者空字符串,然后拼接下面的sql字段
sql += " and title LIKE '%"+this.title+"%'";
//判断条件成立的时候,进行sql语句的拼接,注意空格要留
}
return sql;
}
最后
以上就是勤恳花卷为你收集整理的搬砖笔记: Spring,JDBC ,MVC , Mybaits集合项目搬砖笔记: Spring,JDBC ,MVC , Mybaits整合的全部内容,希望文章能够帮你解决搬砖笔记: Spring,JDBC ,MVC , Mybaits集合项目搬砖笔记: Spring,JDBC ,MVC , Mybaits整合所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复