****项目执行流程:Controller—>Service—>Mapper
一、确定表字段,在数据库中创建表(注:数据库创建表先使用库)
主类建在项目的src/main/java下,配置文件和页面文件建在项目的src/main/resources下,测试类建在src/test/java下
二、以下步骤基于Eclipse工具操作
1、根据表字段建立实体类(包名:entity),生成get/set方法,生成toString方法,依据数据表的主键生成hashcode和equal方法
2、定义持久层接口的抽象方法(接口关键字用interface修饰),一般类名命名为 数据表的表名+Mapper(注:持久层接口是要实现什么功能,比如:增删改查,所以要先分析干什么,要使用的SQL语句是什么)
3、在配置文件中配置SQL映射语句(文件名以xml结尾)
<mapper namespace="包名+持久层接口的类名">
<!-- 当数据表中的表字段与实体类中的属性名不对应时且查询所有数据以 * 表示查询所有的信息的时候
需要配置resultMap,如:<result column="is_default" property="isDefault" />-->
<resultMap id="自定义名" type="包名+实体类名">
<id column="数据表主键" property="数据表主键" />
<result column="表字段名" property="实体类中的属性名" />
</resultMap>
<!-- 插入数据 -->
<insert id="对应持久层接口中的方法名" useGeneratedKeys="true" keyProperty="aid">
</insert>
<!-- 更新数据 -->
<update id="对应持久层接口中的方法名">
</update>
<!--查询数据 -->
<select id="r对应持久层接口中的方法名" resultMap="resultMap里id自定义名">
</select>
</mapper>
4、测试持久层接口功能是否写对,在类前添加两个注解,格式为:
@RunWith(SpringRunner.class)
@SpringBootTest
public class 数据表的表名+MapperTests{
@Autowired
private 数据表的表名+Mapper mapper;
@Test
public void 类名(){
//根据接口层里定义的方法写方法体
}
}
5、判断是否有异常,有则建立自定义异常类,业务层的自定义异常类的父类要继承RuntimeException,控制器自定义异常类的父类要继承Exception,并且建立一个BaseController作为父类处理这些自定义的异常类
6、定义业务层接口的抽象方法(接口关键字用interface修饰),一般类名命名为 I+数据表的表名+Service(注:I是大写的i,业务层接口的功能是要获得什么信息)
7、实现业务层接口中的抽象方法,一般类名命名为 数据表的表名+ServiceImpl(第一个是大写的i,第二个是小写的l),在类前添加一个注解,格式为:
@Service
public class 数据表的表名+ServiceImp implements I+数据表的表名+Service{
@Autowired
private 数据表的表名+Mapper mapper,
//业务层的接口需要用时添加,不需要则不添加
@Autowired
private I+数据表的表名+Service service;
//重写业务层接口中定义的抽象方法
}
8\测试业务层接口功能是否写对,格式跟第4步骤一样
9、实现控制器类,并继承BaseController,一般类名命名为 数据表的表名+Controller,在类前添加两个注解(注:控制器类跟页面相关),格式为:
@RestController
@RequestMapping("自定义的路径名')
public class 数据表的表名+Controller extends BaseController{
@Autowired
private I+数据表的表名+ServiceImp service;
@RequestMapping("自定义的路径名')
public 返回的类型 类名(){//也可传参
//根据接口层里定义的方法写方法体
return ....;
}
10、在对应的页面添加ajax,格式为:
<script type="text/javascript">
注:如果需要在干什么之后再启动,则ajax代码应写在下面这句代码里
$(document).ready(function() { });
$("按钮对应添加的自定义的id名").click(function(){
$.ajax({
"url":"@RequestMapping("自定义的路径名")里的路径名",
"data":$("form表单里添加的自定义的id名").serialize(),
注:关于敏感信息,如:密码等用post,否则用get
"type":"post",
注:页面中的Content-Type类型有html、json、css等
"dataType":"由页面中的Content-Type决定",
"success":function(){
}
});
});
</script>