ssm整合案例MyBatis(1)

ssm和SpringMVC整合案例

1.数据库搭建

打开SQLyog,测试连接,测试成功后创建数据库
在这里插入图片描述在这里插入图片描述
这里需要注意箭头所指的两栏分别选择utf8utf8_general_ci,选择完成后点击创建
在这里插入图片描述可以看到数据库创建成功,之后我们在数据库下创建
在这里插入图片描述在这里插入图片描述在这里插入图片描述
这里需要注意字符集核对两栏分别选择utf8utf8_general_ci引擎选择InnoDB,表名称可以按照自己的意愿来命名
在这里插入图片描述填入我们创建的表中的一些信息,点击保存,表创建完成

当然这是使用SQLyog来进行数据库的创建,图形化界面使得数据库的创建更加便捷,当然我们也可以使用SQL语句来进行创建

CREATE TABLE `books` (
  `bookID` int(10) NOT NULL AUTO_INCREMENT COMMENT '书籍ID',
  `bookName` varchar(100) NOT NULL COMMENT '书籍名字',
  `bookCounts` int(20) NOT NULL COMMENT '书籍数量',
  `detail` varchar(200) NOT NULL COMMENT '描述',
  KEY `bookID` (`bookID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

我们在已经创建好的表中添加一些书籍的信息
在这里插入图片描述书籍信息添加完成后点击刷新也就是箭头所指的按钮

至此,第1步数据库的搭建完成

2.创建项目

这里需要创建Maven的Web项目,所以在创建的时候需要选择模板,关于Maven的Web项目的创建Maven普通项目的创建以及相关的注意事项在我之前的两篇博客《MyBatis框架的使用3(代码的编写)》《SpringMVC的简单讲解》中都有讲解,读者自行查阅

创建完成的项目如下图所示
在这里插入图片描述项目创建完成后就需要导包、连接数据库以及资源过滤问题

1.连接数据库
在这里插入图片描述在这里插入图片描述在测试连接成功后点击箭头所指的按钮,在里面选择我们之前创建好的数据库
在这里插入图片描述选择我们之前创建好的叫做ssmbuild的数据库,之后点击OK,数据库连接完成
在这里插入图片描述在IDE中再次确认我们之前创建的数据库没有问题
在这里插入图片描述数据库连接完成,之后就该导入我们在编写项目时必须的一些包

我们先导入一些开始时候需要的包,后面的包在用到的时候我们在进行添加

    <!--数据库驱动包-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.47</version>
    </dependency>

    <!--mybatis的包-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>

将上面的依赖写入到pom.xml文件的dependencies标签中,写入完成后查看项目结构
在这里插入图片描述可以看到两个包导入完成,导入完成后就可以编写类了

目录结构如图所示
在这里插入图片描述
在实体类pojo的包中新建一个Books类,把每本书都作为一个对象,用Books类来创建书的对象

在这里插入图片描述
Books类中的代码为:

package com.westos.pojo;

public class Books {
    private int bookID;
    private String bookName;
    private int bookCounts;
    private String detail;

    public Books() {
    }

    public Books(int bookID, String bookName, int bookCounts, String detail) {
        this.bookID = bookID;
        this.bookName = bookName;
        this.bookCounts = bookCounts;
        this.detail = detail;
    }

    public int getBookID() {
        return bookID;
    }

    public void setBookID(int bookID) {
        this.bookID = bookID;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public int getBookCounts() {
        return bookCounts;
    }

    public void setBookCounts(int bookCounts) {
        this.bookCounts = bookCounts;
    }

    public String getDetail() {
        return detail;
    }

    public void setDetail(String detail) {
        this.detail = detail;
    }

    @Override
    public String toString() {
        return "books{" +
                "bookID=" + bookID +
                ", bookName='" + bookName + '\'' +
                ", bookCounts=" + bookCounts +
                ", detail='" + detail + '\'' +
                '}';
    }
}

其实要编写上面这段代码非常简单,使用ALT+Inster键查看代码结构,在里面可以选择现成的有参构造、无参构造、get方法、set方法以及toString方法,选中后IDE自动生成,所以这段代码看起来非常多,但是使用快捷键后会编写起来会非常简单

在编写完pojo层以后实体类层建立完毕,我们就需要编写dao层了,dao层主要负责接收上一层的请求来对数据库进行相关操作
在这里插入图片描述
在dao包下,我们必须先要创建一个接口,名字就是BookDao

接口中的内容中就是通过外界能够对数据库进行的一些操作

package com.westos.dao;

import com.westos.pojo.Books;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface BookDao {

    //增加一本Books
    int addBook(Books books);

    //根据id删除Books
    int deleteBookByID(@Param("bookID") int id);

    //更新Books
    int updateBook(Books books);

    //根据id查询Books
    Books queryBookByID(@Param("bookID") int id);

    //查看全部book
    List<Books> queryAllBook();
}

在写完dao层的接口代码后,我们就需要写一个和MyBatis相关的配置文件
在这里插入图片描述
因为我们使用Maven来构建项目,所以在之前的pom.xml中导入了mybatis的依赖后,我们还需要在resources目录下的MyBatis的配置文件中写入下面的代码,这段代码在官网上直接复制粘贴即可

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

因为environments 标签里面的内容IDE会自动生成,所以我们可以删除它

在上面的配置文件代码中我们还需要添加别名,也就是

<typeAliases>
    <package name="com.westos.pojo"/>
</typeAliases>

注意,这个标签和<mappers>标签同级,这样我们的实体类就都会有别名

添加完别名后我们就需要修改 <mappers>标签后面的 resource后面的路径,这个路径就是dao层下面的xml映射文件的路径
在这里插入图片描述
dao层下面的xml映射文件的头部和resources目录下的MyBatis的配置文件的头部一样,只需要做一点改动
在这里插入图片描述dao层下面的xml映射文件中的代码为

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.westos.dao.BookDao">
    
</mapper>

这样dao层下面的xml映射文件和接口就已经关联上了

关联上后将resources目录下的MyBatis的配置文件补充完整

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <typeAliases>
        <package name="com.westos.pojo"/>
    </typeAliases>

    <mappers>
        <mapper resource="com/westos/dao/BookMapper.xml"/>
    </mappers>

</configuration>

至此,MyBatis的配置文件配置完成,如果我们有新的xml映射文件只需要在resources目录下的MyBatis的配置文件中的<mappers>标签中添加新的映射即可

然后我们就可以在dao层下的xml映射文件中编写语句来完成对接口中功能的实现

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.westos.dao.BookDao">

    <!--增加一个books-->
    <insert id="addBook" parameterType="Books">
        insert into ssmbuild.books(bookID, bookName, bookCounts, detail) values
        (#{bookID}, #{bookName}, #{bookCounts}, #{detail})
    </insert>

    <!--根据id删除books-->
    <delete id="deleteBookByID" parameterType="int">
        delete  from ssmbuild.books where bookID = #{bookID}
    </delete>
    
    <!--更新books-->
    <update id="updateBook" parameterType="Books">
        update ssmbuild.books
        set bookName = #{bookName}, bookCounts = #{bookCounts}, detail = #{detail}
        where bookID = #{bookID}
    </update>
    
    <!--根据id查询books-->
    <select id="queryBookByID" resultType="Books">
        select * from ssmbuild.books
        where bookID = #{bookID}
    </select>
    
    <!--查看全部book-->
    <select id="queryAllBook" resultType="Books">
        select * from ssmbuild.books
    </select>
</mapper>

在编辑完dao层的xml映射文件后,dao层结束,这里需要注意一些语句的细节

之后我们需要编辑service层
在这里插入图片描述
因为这个项目比较简单,service层的功能也就是增删改查,所以service层的功能接口我们可以直接复制dao层的BookDao接口中的功能

下面是代码

package com.westos.service;

import com.westos.pojo.Books;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface BookService {
    //增加一本Books
    int addBook(Books books);

    //根据id删除Books
    int deleteBookByID(@Param("bookID") int id);

    //更新Books
    int updateBook(Books books);

    //根据id查询Books
    Books queryBookByID(@Param("bookID") int id);

    //查看全部book
    List<Books> queryAllBook();
}

在编写完接口后我们在service包下继续创建这个接口的实现类
在这里插入图片描述
因为dao层就是接受service层发送过来的请求区对数据库进行操作,所以我们在这个实现类中需要建立和dao层xml映射文件的关联

在BookServiceImpl中添加代码

private BookDao bookDao;

//为了方便注入,我们需要设置一个set方法
public void setBookDao(BookDao bookDao) {
    this.bookDao = bookDao;
}

添加这段代码后我们就可以调用dao层的东西

BookServiceImpl类的完整代码为

package com.westos.service;

import com.westos.dao.BookDao;
import com.westos.pojo.Books;

import java.util.List;

public class BookServiceImpl implements BookService{


    private BookDao bookDao;

    //为了方便注入,我们需要设置一个set方法
    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }

    @Override
    public int addBook(Books books) {
        //如果有其他的业务,我们添加在相应的方法中即可,因为这个项目比较简单,所以业务只有一句话        
        return bookDao.addBook(books);
    }

    @Override
    public int deleteBookByID(int id) {
        return bookDao.deleteBookByID(id);
    }

    @Override
    public int updateBook(Books books) {
        return bookDao.updateBook(books);
    }

    @Override
    public Books queryBookByID(int id) {
        return bookDao.queryBookByID(id);
    }

    @Override
    public List<Books> queryAllBook() {
        return bookDao.queryAllBook();
    }
}

至此,service层也编写完成,当然这篇博客讲到的主要是Mybatis,可看做对Mybatis的回顾,关于SpringMVC的整合,我后续会再写一篇博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值