这个很简单的啦,博客上都有的啦,或许你在担忧用Maven还是直接创建,不用纠结,两种方式都是一样的,我用的是直接创建的方法。
补充:有的人没有这个选项,这个普通的免费版本也就是社区版是没有这个功能的,之前刷到别人说的可以下,其实压根不行,只有企业版有(这里我用的是破解版,也就是盗版)
如图
一般来说这几个对于是新手的我来说就够用了,后面可能会用到其他打包好的工具来节省代码(但是原理要好好看)
这是创建之后的文件目录,首先别看这么多东西。大多压根就是你用不到的。
下面箭头的地方是常用的地方,.idea是IDEA这个编辑器自带的,.mvn也是自带的,不需要管
首先不说代码,可能有的人跟我一样才用这个spring一小段时间,所以我用自己的理解先把上面那张有箭头的地方进行一下解释
java:里面写的是pojo类、contraller类、mapper类、service类等。
resources:这里写的是一些html文件或者一些.xml这种文件,.xml文件就是配 置文件,就是通过配置的方式,对一个变量或者常量进行赋值,就不需要你自己在程序中num = 1这种操作了。
test:用于测试你的功能
pom.xml:这里面是前面说选择web,sql之类的选项,里面是依赖,也就是引入这些包,然后可以用它们的功能。
这里我数据库里面创建了一张Student表(MySQL)
pojo:里面写的是实体类,也就是数据库里面的一个数据的类型
Student.java:属性对应数据库的字段,给出set和get方法,用快捷键alt+insert然后选择setter and getter就可以了
package com.example.demo.pojo;
public class Student {
private String stuId;
private String name;
private String age;
private String address;
private String classId;
public String getStuId() {
return stuId;
}
public void setStuId(String stuId) {
this.stuId = stuId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getClassId() {
return classId;
}
public void setClassId(String classId) {
this.classId = classId;
}
@Override
public String toString() {
return "Student{" +
"stuId='" + stuId + '\'' +
", name='" + name + '\'' +
", age='" + age + '\'' +
", address='" + address + '\'' +
", classId='" + classId + '\'' +
'}'+ '\n';
}
}
mapper:放的是接口,一般存放实现功能的接口
Mapper.java:这是一个接口
package com.example.demo.mapper;
import com.example.demo.pojo.Student;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
@Repository
public interface Mapper {
// 增加一个数据到数据库
void insertStu(Student stu);
// 删除数据库中的一条数据
void deleteStu(String id);
// 改变数据库中的一条数据
void upDateStu(Student stu);
// 查询操作
Student selectStu(String id);
// 使用PageHelper插件进行分页查询
List<Student> selectPageHelper();
// 手动实现分页查询
List<Student> gPI(Map<String,Integer> map);
//总计数据库中的数据个数
int count();
}
Mapper.xml:配置文件
标签:
1.resuluMap:指的是数据库中的字段对应实体类中的属性,一一对应保证值可以传成功。
2.剩下的标签都是SQL语句,id指的是Mapper.java中的方法名,要一一对应,扫描要求对应一致。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.Mapper">
<resultMap id="Student" type="com.example.demo.pojo.Student">
<id column="stu_id" property="stuId"/>
<id column="name" property="name"/>
<id column="age" property="age"/>
<id column="address" property="address"/>
<id column="class_id" property="classId"/>
</resultMap>
<!--添加操作-->
<insert id="insertStu">
insert into student (stu_id, name, age, address, class_id)
values (#{stuId},#{name},#{age},#{address},#{classId});
</insert>
<!--删除操作-->
<delete id="deleteStu" >
delete from student where stu_id = #{stuId}
</delete>
<!--修改数据操作-->
<update id="upDateStu">
update student set name = #{name}, age = #{age}, address = #{address},class_id = #{classId}
where stu_id = #{stuId}
</update>
<!--查询操作-->
<select id="selectStu" resultType="com.example.demo.pojo.Student">
select * from student where stu_id = #{stuId}
</select>
<!--使用插件pageHelper进行分页查询-->
<select id="selectPageHelper" resultType="com.example.demo.pojo.Student">
select * from student
</select>
<select id="count" resultType="int">
select count(*) from student
</select>
<select id="gPI" parameterType="map" resultType="com.example.demo.pojo.Student">
select * from student LIMIT #{startIndex},#{pageSize}
</select>
</mapper>
service:对Mapper层的包装
ServiceMapper.java:业务层接口,对Mapper层进行一个包装
package com.example.demo.service;
import com.example.demo.pojo.Page;
import com.example.demo.pojo.Student;
import org.apache.catalina.valves.StuckThreadDetectionValve;
import java.util.List;
import java.util.Map;
public interface ServiceMapper {
// List getByLimit()
void insert(Student stu);
void delete(String id);
void update(Student stu);
Student select(String id);
//pageHelper插件的使用
Page selectByPageHelper(int pageStart, int pageSize);
Page getPageInformation(Integer startIndex, Integer pageSize);
}
ServiceMapperImpl:ServiceMapper的实现类,重写其中的业务方法,实现功能
package com.example.demo.service.serviceImpl;
import com.example.demo.mapper.Mapper;
import com.example.demo.pojo.Page;
import com.example.demo.pojo.Student;
import com.example.demo.service.ServiceMapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class StuServiceMapperImpl implements ServiceMapper {
@Autowired
Mapper mapper;
@Override
public void insert(Student stu) {
mapper.insertStu(stu);
}
@Override
public void delete(String id) {
mapper.deleteStu(id);
}
@Override
public void update(Student stu) {
mapper.upDateStu(stu);
}
@Override
public Student select(String id) {
return mapper.selectStu(id);
}
@Override
public Page selectByPageHelper(int pageStart,int pageSize) {
PageHelper.startPage(pageStart,pageSize);
List<Student> students = mapper.selectPageHelper();
PageInfo<Student> pageInfo = new PageInfo<>(students);
Page page = new Page();
page.setPageIndex(pageStart);
page.setPageSize(pageSize);
page.setCount(mapper.count());
page.setStudents(pageInfo.getList());
return page;
}
@Override
public Page getPageInformation(Integer startIndex, Integer pageSize) {
Map<String, Integer> pageMap = new HashMap<String, Integer>();
pageMap.put("startIndex",(startIndex - 1) * pageSize);
pageMap.put("pageSize", pageSize);
//第一个参数表示从第几行数据开始查,第二个参数表示查几条数据,“limit 3,2”表示从第四行数据开始,取两条数据。
List<Student> students = mapper.gPI(pageMap);
Page page = new Page();
page.setPageIndex(startIndex);
page.setPageSize(pageSize);
page.setCount(mapper.count());
page.setStudents(students);
return page;
}
}
Contraller:用业务层完成相关操作
StuContraller:
package com.example.demo.contraller;
import com.example.demo.pojo.Page;
import com.example.demo.pojo.Student;
import com.example.demo.service.serviceImpl.StuServiceMapperImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@RestController
public class StuContraller {
@Autowired
StuServiceMapperImpl service;
@RequestMapping("/insert")
public String insertStudent(@RequestParam("stu") String id) {
Scanner scan = new Scanner(System.in);
Student stu = new Student();
stu.setStuId(id);
System.out.print("请输入姓名:");
stu.setName(scan.next());
System.out.print("请输入年龄:");
stu.setAge(scan.next());
System.out.print("请输入地址:");
stu.setAddress(scan.next());
System.out.print("请输入班级:");
stu.setClassId(scan.next());
System.out.println(stu);
service.insert(stu);
return stu.toString() + "创建成功";
}
@RequestMapping("/delete/{id}")
public String deleteStudent(@PathVariable("id") String id) {
service.delete(id);
return "id为" + id + "的信息已删除";
}
@RequestMapping("/update")
public String updateStudent(@RequestParam("id") String id,@RequestParam("name") String name,@RequestParam("age") String age
, @RequestParam("address") String address,@RequestParam("classId") String classID) {
Student stu = new Student();
stu.setStuId(id);
stu.setName(name);
stu.setAge(age);
stu.setAddress(address);
stu.setClassId(classID);
service.update(stu);
return "id为" + id + "学生的信息已更新";
}
@RequestMapping("/select")
public String select(@RequestParam("id") String id) {
return service.select(id).toString();
}
@RequestMapping("/selectByPageHelper/{startPage}/{pageSize}")
public Page selectAll(@PathVariable("startPage") int startPage, @PathVariable("pageSize") int pageSize) {
Page page = service.selectByPageHelper(startPage,pageSize);
return page;
}
@RequestMapping("/selectLimit/{startIndex}/{pageSize}")
public Page getPage(@PathVariable("startIndex") Integer startIndex,@PathVariable("pageSize") Integer pageSize) {
Page pageInformation = service.getPageInformation(startIndex, pageSize);
return pageInformation;
}
}
application.properties:用于数据库连接信息等
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/dbtest1
spring.datasource.username=#数据库用户名
spring.datasource.password=#数据库密码
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.default-enum-type-handler=org.apache.ibatis.type.EnumTypeHandler
mybatis.configuration.call-setters-on-nulls=true
mybatis.configuration.jdbc-type-for-null=null
#pagehelper
pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
pagehelper.params=count=countSql
因为内容比较多,整理的有点杂,而且也是小白才上路,有错误的地方请大佬多多指点