SSM(Spring+SpringMVC+MyBatis)框架学习心路历程

这是第二次写框架的项目,上一次已经是几个月之前了,为了加深记忆且方便回顾,特整理出思路,以供大家,尤其是我本人参考。

这次,是工作室的寒假任务,我负责我们项目的建表,实体类,xml,mapper,service,serviceImpl的编写。

第一,确定写项目顺序

1、建表
2、实体类
3、xml
4、mapper
5、service
6、serviceImpl


先给大家简单看看项目结构
SSM(Spring+SpringMVC+MyBatis)框架学习心路历程_第1张图片


1、建表

首先,确定建表的对象是实体SchoolRoll【学籍】,根据原型,确定都有哪些字段。
SSM(Spring+SpringMVC+MyBatis)框架学习心路历程_第2张图片
在这里,我借鉴了项目之前的StudentInformation.java实体类,一些字段的命名。
SSM(Spring+SpringMVC+MyBatis)框架学习心路历程_第3张图片
根据红色字来确定是否允许空值。

长度是个问题,还没想好如何确定?

2、实体类

SSM(Spring+SpringMVC+MyBatis)框架学习心路历程_第4张图片
在这里介绍下,用到的spring的几个注解。

@Entity   标注该类为实体类
@Id   标注id,主键
@Column(name = "数据库中字段名")  重命名
@Transient  不跟数据库中的字段映射,进一步解释说明某一字段

作用:定义数据库中的所有字段,写出对应get,set,toString方法。

3、xml

SSM(Spring+SpringMVC+MyBatis)框架学习心路历程_第5张图片

通过parameterType指定输入参数的类型。

类型可以是简单类型,pojo,包装类型,hashmap

ResultType,输出为简单类型

输出简单类型时,必须查询出来的结果集有一条记录,最终将第一个字段的值转换为输出类型。使用session中的selectOne可进行查询单条记录。

ResultType,输出为pojo类型

输出pojo对象和输出pojo列表在sql中定义的resultType是一样的。

返回单个pojo对象要保证sql查询出来的结果集为单条,内部使用session.selectOne方法调用,mapper接口使用pojo对象作为方法返回值。

返回pojo列表表示查询出来的结果集可能为多条,内部使用session.selectList方法,mapper接口使用List对象作为方法返回值。

resultMap

ResultType可以指定pojo,将查询结果映射成pojo的属性。但是要求数据库列名与pojo属性名必须相同,才能映射成功。

如过查询的字段名与pojo的属性名不同,则通过resultMap,将字段名和属性名做一个映射,resultMap实质上,还是将数据库字段映射到pojo中。

resultMap可以实现将查询结果映射为复杂类型的pojo。如:在查询结果映射对象中,包括pojo和list实现一对一和一对多的查询。


#{}实现向prepareStatement中的预处理语句中设置参数值,sql语句中#{}表示一个占位符。

使用占位符可以防止sql的注入,在使用时不需要关心参数的类型,mybatis会自动的进行Java与jdbc的转换。#{} 可以接受简单类型和pojo的属性值。如果parameterType中指定的是单个的简单类型,#{}中可以使用value或是其他值。

#{}与${}的不同:

   通过${}可以将parameterType传入的内容拼接在sql中,并且不进行jdbc类型转换,${}可以接受简单类型和pojo的属性值,若parameterType为单个简单类型时,${}中必须使用value。使用${}不能防止sql注入,但有时会很方便

问题一:

SQL数据库中SELECT AS中的AS代表的是重命名列名或者表名

其用法是

SELECT 列名1 AS 列1,列名2 AS 列1 FROM 表1

语句表示的意思是从表1中读取列名1和列名2的数据,并且为列名1和列名2分别重命名为列1和列2.

问题二:

order by ts.id desc

desc是降序,asc是升序

问题三

(SELECT sex_id FROM t_sex_code WHERE sex = #{sex})和#{sex_id}的区别

之前,参考项目中的student.mapper.xml的写法【第一种】,写了好多,虽然方法什么的,都可以跑通,但是经过讨论,这种写法没必要,因为jsp页面,只有是有连接附表的部分,肯定有下拉框

 <label>专业label>
                    <select class="textTheme" autocomplete="off" name="majorId">
                        <option value="">请选择option>
                        <c:forEach var = "item" items="${majors}">
                            <option value="${item.majorId}">${item.majorName}option>
                        c:forEach>
                    select>

所以,没有必要再去用第一种办法

4、mapper

SSM(Spring+SpringMVC+MyBatis)框架学习心路历程_第6张图片
这里的方法和xml中的id要完全相同

5、service

SSM(Spring+SpringMVC+MyBatis)框架学习心路历程_第7张图片
这个依旧和mapper中方法名相同

6、serviceImpl

SSM(Spring+SpringMVC+MyBatis)框架学习心路历程_第8张图片
切记,要继承service。

@Service  标注service
@Autowired 自动装配成java bean

你可能感兴趣的:(电脑系统)