前后端分离项目(一)

后台搭建

采用SpringBoot搭建项目的后台,完整项目结构如下在这里插入图片描述
结构说明:
bean:里面书写自己的实体类
controller:里面书写和前端交互的路由信息
dao:里面书写接口信息
util:自己的工具类
也可以添加config,可以配置swagger,测试自己的接口是否配置正确
详细配置:
application.yml
在resource/application.yml里面配置数据源与整合mybatis的内容以及端口号

#mysql
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/sportplay?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    username: root
    password: root

#mybatis
mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.zut.sportplay.bean

server:
  port: 9000

bean省略get,set方法
user:

public class User {
    private int id;
    private String username;
    private String password;
    private String email;
    private String role;
    private Boolean state;
    }

MainMenu:

public class MainMenu {
    int id;
    String title;
    String path;
    List<SubMenu> sMain;
    }

SubMenu:

public class SubMenu {
    int id;
    String title;
    String path;
    }

dao
userDao:

@Repository
public interface UserDao {
    public User getUserByMessage(@Param("username") String username, @Param("password")String password);
    public List<User> findAllUser(@Param("username")String username,@Param("pageStart")int pageState,@Param("pageSize")int pageSize);
    public int getUserCount(@Param("username")String username);
    public int updateState(Integer id,Boolean state);
    public int addUser(User user);
    public int delUser(int id);
    public User findUser(int id);
    public int updateUser(User user);
}

由于有一对多的查询,所以再加个MenuDao

@Repository
public interface MenuDao {
    List<MainMenu> findAllMenu();
}

Mapper文件
UserMapper.xml

<?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.zut.sportplay.dao.UserDao">
    <select id="getUserByMessage" resultType="com.zut.sportplay.bean.User">
        SELECT * FROM easyuser where username=#{username} and password = #{password} and state = 1
    </select>
    <select id="findAllUser" resultType="com.zut.sportplay.bean.User">
        SELECT * FROM easyUser
        <if test="username !=null ">
            WHERE username like #{username}
        </if>
        LIMIT #{pageStart},#{pageSize}
    </select>

    <select id="getUserCount" resultType="java.lang.Integer">
        SELECT count(*) FROM `easyuser`
        <if test="username !=null ">
            WHERE username like #{username}
        </if>
    </select>
    <update id="updateState">
        UPDATE easyuser SET state = #{state} WHERE id = #{id}
    </update>
    <insert id="addUser" >
        INSERT INTO easyuser
            (username,password,email,role,state)
            VALUE
            (#{username},#{password},#{email},#{role},#{state})
    </insert>
    <delete id="delUser">
        delete from easyuser
                where  id = #{id}
    </delete>
    <select id="findUser" resultType="com.zut.sportplay.bean.User">
        SELECT * FROM easyuser WHERE id = #{id}
    </select>
    <update id="updateUser">
        UPDATE easyuser SET username = #{username} , password = #{password} ,
                            email = #{email} WHERE id = #{id}
    </update>
</mapper>

Menu.xml

<?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.zut.sportplay.dao.MenuDao">
    <!--这个是一对多的查询内容    -->
    <resultMap id="menuMap" type="com.zut.sportplay.bean.MainMenu">
        <id column="id" property="id"></id>
        <result column="title" property="title"></result>
        <result column="path" property="path"></result>
        <!--下面这个是对应的查询list集合 -->
        <collection property="sMain" ofType="com.zut.sportplay.bean.SubMenu">
            <id column="sid" property="id"></id>
            <result column="stitle" property="title"></result>
            <result column="spath" property="path"></result>
        </collection>
    </resultMap>
    <select id="findAllMenu" resultMap="menuMap">
        SELECT mm.*,sm.id as sid ,sm.title as stitle,sm.path as spath FROM mainmenu mm ,submenu sm WHERE mm.id = sm.mid;
    </select>
</mapper>

Controller层

UserController:里面对应dao层url的crud

@RestController
public class UserController {
    @Autowired
    UserDao userDao;
    @RequestMapping("/alluser")
    public String getUserList(QueryInfo queryInfo){
        //获取最大列编号和当前编号
        int numbers = userDao.getUserCount("%" + queryInfo.getQuery() + "%");
        int pageStart = (queryInfo.getPageNum() - 1) * queryInfo.getPageSize();
        List<User> users = userDao.findAllUser("%" + queryInfo.getQuery() + "%", pageStart, queryInfo.getPageSize());
        HashMap<String, Object> res = new HashMap<>();
        res.put("numbers",numbers);
        res.put("data",users);
        String s = JSON.toJSONString(res);
        return s;
    }
    @RequestMapping("/userState")
    public String updateState(@RequestParam("id")Integer id,@RequestParam("state")Boolean state){
        int i = userDao.updateState(id, state);
        return i>0?"success":"error";
    }

    @RequestMapping("/addUser")
    public String addUser(@RequestBody User user){
        user.setRole("普通用户");
        user.setState(false);
        int i = userDao.addUser(user);
        return i>0?"success":"error";
    }

    @RequestMapping("/deleteUser")
    public String deleteUser(int id){
        int i = userDao.delUser(id);
        return i>0?"success":"error";
    }

    @RequestMapping("/getupdate")
    public String getUpdateUser(int id){
        User user = userDao.findUser(id);
        String u = JSON.toJSONString(user);
        return u;
    }

    @RequestMapping("/edituser")
    public String editUser(@RequestBody User user){
        int i = userDao.updateUser(user);
        return i>0?"success":"error";
    }

LoginController:

@RestController
//@CrossOrigin("http://localhost:8080")
public class LoginController {
    @Autowired
    public UserDao userDao;

    @RequestMapping("/login")
    public String login(@RequestBody User user){
        String flag = "error";
        User us = userDao.getUserByMessage(user.getUsername(), user.getPassword());
        System.out.println("user:"+us);
        HashMap<String,Object> result = new HashMap<>();
        if(us!=null){
            flag = "ok";
        }
        result.put("flag",flag);
        result.put("user",us);
        String json = JSON.toJSONString(result);
        return json;
    }

MenuController:

@RestController
public class MenuController {
    @Autowired
    MenuDao menuDao;
    @RequestMapping("/menus")
    public String findAllMenus(){
        HashMap<String,Object> data = new HashMap<>();
        List<MainMenu> msins = menuDao.findAllMenu();
        if(msins != null){
            data.put("menus",msins);
            data.put("flag",200);
        }else {
            data.put("flag",404);
        }
        System.out.println(data);
        String s = JSON.toJSONString(data);
        return s;
    }

附录:前后端交互的时候会产生跨域的问题,要配置跨域的文件,具体信息如下所示:

@Configuration
public class WebConfig implements WebMvcConfigurer {
//    这是要解决跨域问题(全局配置类)
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("GET","POST","PUT","DELETE","OPTIONS")
                .allowCredentials(true)
                .maxAge(3600);
    }
}

最最重要的文件,项目启动类:

@SpringBootApplication
@MapperScan("com.zut.sportplay.dao")
public class SportplayApplication {

    public static void main(String[] args) {
        SpringApplication.run(SportplayApplication.class, args);
    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值