我是靠谱客的博主 勤恳花卷,最近开发中收集的这篇文章主要介绍搬砖笔记: Spring,JDBC ,MVC , Mybaits集合项目搬砖笔记: Spring,JDBC ,MVC , Mybaits整合,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

搬砖笔记: 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执行流程

  1. 第一步:首先创建一个web动态项目,

  2. 按照项目的技术需求,将所需的jar包导入进来 ;

  3. 按照项目搭建的需求 ,配置相关的配置文件,xml。properties。以及log4配置文件,

  4. 检查配置文件中,与web.xml进行关联,关联启动spring,以及springmvc的xml服务,设置过滤器过滤字符集

  5. 检查spring配置,和springmvc配置文件里面的内容,

  6. spring:管理数据库配置文件,获得连接池对象,以及配置 Mybatis的xml文件;

    springMVC:静态资源,扫描包路径,mvc全注解支持,视图解析,文件解析,拦截器,

  7. 从上期项目中,以及课程中,copy获得相关项目结构中的板块,比如前端显示,sql数据库文件,以及实体类字段模板;

  8. 创建MVC的三层架构,使用Mapper替代dao层 ;

  9. 配置Mapper里面的接口,和 Mapper.xml文件,封装sql语句;

  10. 创建测试类,执行测试方法 ;

  11. 测试类执行成功之后,写Controller类,执行控制器控制 ;同步写 UI前端form请求表单内容 ;

  12. 整体测试,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 &lt;= 3000
						</when>
						<when test="sal == 5000"><!-- 当你选择3000~5000档位的时候-->
							and sal &lt;= 5000 and sal &gt; #{sal}-2000
						</when>
						<when test="sal == 8000"><!-- 当你选择3000~5000档位的时候 -->
							and sal &lt;= 8000 and sal &gt; #{sal}-3000
						</when>
						<when test="sal == 8001"><!-- 当你选择8000以上档位的时候-->
							and sal &gt; #{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整合所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部