美文网首页程序员
Spring Boot 实战构建支教信息平台-第二章 整合Myb

Spring Boot 实战构建支教信息平台-第二章 整合Myb

作者: 关耳木水 | 来源:发表于2018-07-24 00:18 被阅读0次

一、简介


Spring Boot真的是一个很爽的东西,相比于以前的Spring项目,我们少了大量的繁琐配置,像上一章一样,我们很快的就能运行起来并输出一个Hello world。那么这章我们来连接数据库,并将我们数据库中的内容输出。其实这些内容得益于Spring Boot的强大,几个钟头就能迅速搭建起一个web应用,但是我每天的空闲时间也不多,丧。。。慢慢来嘛。


二、整合Mybatis


要连接数据库那我们得先把我们的数据库搭起来嘛,这里我们选择使用Mysql。
我们可以去登陆官网下载Mysql
安装教程可以参照这里
另一种更加简单的方式就是我们直接安装XAMPP,XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包。
下载地址
Windows下直接运行EXE一切就帮你弄好了
安装好以后我们打开控制面板

j6.PNG
点击Start启动我们的MySQL,数据库的管理我们可以用自带的phpMyAdmin,也可以选择其他的数据库管理工具,比如Navicat,我们这里直接用phpMyAdmin就好了。
启动Apache 和 Mysql 效果如下:
j7.PNG
根据自己设置的端口号我这里是8080在浏览器输入 localhost:8080/phpmyadmin/ 就可以看到我们的phpMyAdmin了效果如下图
j8.PNG
新建一个数据库,名字随便取,用作我们的数据存放点
那么支教平台我们需要设计一个什么样的表呢?
我们可以去现有的支教网站上去看一看,我们可以登陆中华支教与助学信息中心看一看,支教信息需要那些东西
首先我们需要一个用户表,这个表设计很简单,按自己需求进行设计
然后是支教信息的表设计,按照中华支教与助学信息中心的格式我大概设计成这个样子
j9.PNG
创建表的sql
CREATE TABLE `supportinfo` (
  `sid` int(10) UNSIGNED NOT NULL,
  `title` varchar(60) NOT NULL COMMENT '标题',
  `orgintro` text NOT NULL COMMENT '组织简介',
  `ddl` date NOT NULL COMMENT '报名截止时间',
  `servel` varchar(25) NOT NULL COMMENT '服务时间',
  `des` varchar(20) NOT NULL COMMENT '支教地点',
  `reqnum` int(11) NOT NULL COMMENT '招募人数',
  `job` text NOT NULL COMMENT '工作内容',
  `salary` text NOT NULL COMMENT '待遇',
  `requir` text NOT NULL COMMENT '报名条件',
  `contact` text NOT NULL COMMENT '联系方式',
  `uid` int(11) NOT NULL,
  `pic` varchar(100) NOT NULL COMMENT '图片',
  `ptime` datetime DEFAULT CURRENT_TIMESTAMP,
  `suptype` varchar(20) NOT NULL COMMENT '支教类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

好了暂时先设计这两张表,数据库先放到一边,我们将关注点转移到我们的项目上
首先将我们前一章在pom.xml中注释的那几行还原,为了连接到MySQL数据库我们还需要加上:

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

然后为了调试的方便,再加上

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

接下来写配置文件,打开application.properties修改数据源配置,如下

#服务器端口
server.port = 80 

#数据源设置
spring.datasource.url=jdbc:mysql://localhost:3306/【你的数据库名称】?characterEncoding=utf8  
spring.datasource.username=你的数据库用户名 
spring.datasource.password=你的数据库密码
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

mybatis.typeAliasesPackage=com.Teach.support.model
mybatis.mapperLocations=classpath:mapper/*.xml
  • mybatis.typeAliasesPackage:为实体对象所在的包,跟数据库表一一对应
  • mybatis.mapperLocations:mapper文件的位置

好回到我们的Src目录下,新建几个package

  • Mapper
  • Model
  • Service
  • ServiceImpl
    项目结构如下:


    j10.PNG

首先User.java 代码,各个变量的名称和类型根据自己设计的表修改,这里放出我的User:

public class User {
    private Integer uid;

    private String uname;

    private String password;

    private String phone;

    private String email;

    private Date rtime;

    private String nickname;
    
    public Integer getUid() {
        return uid;
    }

    public void setUid(Integer uid) {
        this.uid = uid;
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname == null ? null : uname.trim();
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password == null ? null : password.trim();
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone == null ? null : phone.trim();
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email == null ? null : email.trim();
    }

    public Date getRtime() {
        return rtime;
    }

    public void setRtime(Date rtime) {
        this.rtime = rtime;
    }

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname == null ? null : nickname.trim();
    }
    
}

接下来是我们的额最重要的SupportInfo:

public class SupportInfo {
    private Integer sid;
    private String title;
    private Date ddl;
    private String servel;
    private String des;
    private Integer reqnum;
    private Integer uid;
    private String pic;
    private Date ptime;
    private String suptype;
    private String orgintro;
    private String job;
    private String salary;
    private String requir;
    private String contact;
    public Integer getSid() {
        return sid;
    }
    public void setSid(Integer sid) {
        this.sid = sid;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title == null ? null : title.trim();
    }
    public Date getDdl() {
        return ddl;
    }
    public void setDdl(Date ddl) {
        this.ddl = ddl;
    }
    public String getServel() {
        return servel;
    }
    public void setServel(String servel) {
        this.servel = servel == null ? null : servel.trim();
    }
    public String getDes() {
        return des;
    }
    public void setDes(String des) {
        this.des = des == null ? null : des.trim();
    }
    public Integer getReqnum() {
        return reqnum;
    }
    public void setReqnum(Integer reqnum) {
        this.reqnum = reqnum;
    }
    public Integer getUid() {
        return uid;
    }
    public void setUid(Integer uid) {
        this.uid = uid;
    }
    public String getPic() {
        return pic;
    }
    public void setPic(String pic) {
        this.pic = pic == null ? null : pic.trim();
    }
    public Date getPtime() {
        return ptime;
    }
    public void setPtime(Date ptime) {
        this.ptime = ptime;
    }
    public String getSuptype() {
        return suptype;
    }
    public void setSuptype(String suptype) {
        this.suptype = suptype == null ? null : suptype.trim();
    }
    public String getOrgintro() {
        return orgintro;
    }
    public void setOrgintro(String orgintro) {
        this.orgintro = orgintro == null ? null : orgintro.trim();
    }
    public String getJob() {
        return job;
    }
    public void setJob(String job) {
        this.job = job == null ? null : job.trim();
    }
    public String getSalary() {
        return salary;
    }
    public void setSalary(String salary) {
        this.salary = salary == null ? null : salary.trim();
    }
    public String getRequir() {
        return requir;
    }
    public void setRequir(String requir) {
        this.requir = requir == null ? null : requir.trim();
    }
    public String getContact() {
        return contact;
    }
    public void setContact(String contact) {
        this.contact = contact == null ? null : contact.trim();
    }
}

今天我们还用不到User,先来看SupportInfoMapper,对于一些简单的sql查询,我们可以直接通过注解的方式实现而不需要单独去写xml

public interface SupportInfoMapper {
    @Select({
        "select",
        "sid, title, ddl, servel, des, reqnum, uid, pic, ptime, suptype, orgintro, job, ",
        "salary, requir, contact",
        "from supportinfo",
        "where sid = #{sid,jdbcType=INTEGER}"
    })
    @Results({
        @Result(column="sid", property="sid", jdbcType=JdbcType.INTEGER, id=true),
        @Result(column="title", property="title", jdbcType=JdbcType.VARCHAR),
        @Result(column="ddl", property="ddl", jdbcType=JdbcType.DATE),
        @Result(column="servel", property="servel", jdbcType=JdbcType.VARCHAR),
        @Result(column="des", property="des", jdbcType=JdbcType.VARCHAR),
        @Result(column="reqnum", property="reqnum", jdbcType=JdbcType.INTEGER),
        @Result(column="uid", property="uid", jdbcType=JdbcType.INTEGER),
        @Result(column="pic", property="pic", jdbcType=JdbcType.VARCHAR),
        @Result(column="ptime", property="ptime", jdbcType=JdbcType.TIMESTAMP),
        @Result(column="suptype", property="suptype", jdbcType=JdbcType.VARCHAR),
        @Result(column="orgintro", property="orgintro", jdbcType=JdbcType.LONGVARCHAR),
        @Result(column="job", property="job", jdbcType=JdbcType.LONGVARCHAR),
        @Result(column="salary", property="salary", jdbcType=JdbcType.LONGVARCHAR),
        @Result(column="requir", property="requir", jdbcType=JdbcType.LONGVARCHAR),
        @Result(column="contact", property="contact", jdbcType=JdbcType.LONGVARCHAR)
    })
    SupportInfo selectByPrimaryKey(Integer sid);
}

接下来实现我们的Service,打开SupportInfoService.java 写入:

public interface SupportInfoService {
    
    public SupportInfo GetByPrimartKey(Integer id);
    
}

接着打开SupportInfoServiceImpl进行实现:

@Service
public class SupportInfoServiceImpl implements SupportInfoService {

    @Autowired
    SupportInfoMapper Simpper;
    
    @Override
    public SupportInfo GetByPrimartKey(Integer id) {
        SupportInfo Si = Simpper.selectByPrimaryKey(id);
        return Si;
    }

}
  • @Autowired 自动注入,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作
    然后打开MainController,新增我们的Controller
@RestController
public class MainController {
    
    @Autowired
    SupportInfoService SIService;
    
    @RequestMapping("/")
    public String HelloWorld()
    {
        return "Hello world!";
    }
    
    @RequestMapping("/s")
    public SupportInfo getInfo(){
        
        return SIService.GetByPrimartKey(41);
        
    }
}

最后打开supportApplication.java 在上方添加注解

  • @MapperScan("com.Teach.support.Mapper")
    就是你设定的Mapper文件的包地址
    好了,大功告成,点击启动
    在浏览器输入localhost/s
    得到:
    j11.PNG

PS: 别忘了在数据库中添加内容,数据库没有东西,你当然也得不到东西
好了,我们的项目框架已经搭建好了,接下来就是扩展和优化了,以及制作我们的视图(View)

相关文章