ssm整合:mybatis层(dao层面)

我们整合ssm三个框架通过一个小项目来实现。

一个项目从零开始写,基本步骤便要想好我们的需求,设计出我们的数据库,完善我们的业务,构建出我们的前端页面。

我们写一个简单的图书管理项目,数据库只存在一张books的表格,包含(`bookID`,`boodName`,`bookCounts`,`detail`)数据库脚本如下:

CREATE DATABASE `ssmbuild`

USE `ssmbuild`

DROP TABLE IF EXISTS `book`

CREATE TABLE `books` (
	`bookID` INT(10) NOT NULL AUTO_INCREMENT COMMENT '书id',
	`bookName` VARCHAR(100) NOT NULL COMMENT '书名',
	`bookCounts` INT(11) NOT NULL COMMENT '数量',
	`detail` VARBINARY(200) NOT NULL COMMENT '描述',
	KEY `bookID` (`bookID`)
) ENGINE=INNODB DEFAULT CHARSET=utf8

INSERT INTO `books` ( `bookID`,`boodName`,`bookCounts`,`detail`) VALUES
(1,'Java',1,'从入门到放弃'),
(2,'MySQL',10,'从删库到跑路'),
(3,'Linux',5,'从进门到进牢')

数据库设计好了后打开idea创建我们的maven项目,把基本的几个包建立好,例如mapper(数据库层)、controller(控制层)、service(业务层)、pojo(实体类)

接下来便是引入我们的maven依赖,我们用到的有 

依赖 junit,数据库驱动,连接池,servlet,jsp,mybatis,mybatis-spring,spring

 junit依赖:

<!--junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

mysql依赖(注意版本要对应):

<!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.27</version>
        </dependency>

数据库连接池(这里用到的是c3p0,也可以使用其他):

<!--数据库连接池: c3p0:dbcp-->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.4</version>
        </dependency>

然后便是servlet和JSP依赖:

<!--Servlet - JSP-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

还有我们mybatis的依赖:

<!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.8</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.3</version>
        </dependency>

最后便是我们spring中要用到的万能spring-webmvc依赖:

<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.15</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>

注意!

各种依赖的版本请自行更改至使用的对应版本!

然后把我们的配置文件也都创建好,方便后续直接编写。

这里列出mybatis和Spring配置的头部内容,官网较慢,日后可直接来博客获取。 

mybaits:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <!-- 相关配置 -->
  
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

spring:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="..." class="...">  
        <!-- collaborators and configuration for this bean go here -->
    </bean>

    <bean id="..." class="...">
        <!-- collaborators and configuration for this bean go here -->
    </bean>

    <!-- more bean definitions go here -->

</beans>

在写我们的数据库配置,建议使用外部properties文件,后续可以交给sping托管。

(若mysql版本在8.0以上,需在Driver前加cj,并且修改时区serverTimezone=Asia/Shanghai)

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai
user=root
password=Yj0717

 配置了properties文件后,在mybatis-config.xml中导入使用

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    
    <properties resource="db.properties"/>
    
    <typeAliases>
        <package name="com.chenxi.pojo"/>
    </typeAliases>
    
    <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="${user}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    
    <mappers>
        <mapper class="com.chenxi.mapper.BookMapper.xml"/>
    </mappers>
</configuration>

接下来便可以讲配置放一段落,开始我们实体、mapper、业务层的代码编写。

首先是我们的实体类books(尽量与数据库名相同): 

package com.chenxi.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author chenxi
 * @Date 2022/9/23
 * @Description 实体类
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Books {
    private int bookID;
    private String bookName;
    private int bookCounts;
    private String detail;
}

 上方三个注解是博主使用了lombok进行偷懒(lombok YYDS)

<!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
        </dependency>

然后就是我们的BookMapper接口,定义了基本的CRUD方法:

package com.chenxi.mapper;

import com.chenxi.pojo.Books;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.context.annotation.ComponentScan;

import java.util.List;
//@ComponentScan(value = "com.chenxi.mapper")
public interface BookMapper {
    //CRUD
    int addBook(Books books);

    int deleteBookById(@Param("bookID") int id);

    int updateBook(Books books);

    Books queryBookById(@Param("bookID") int id);

    List<Books> queryAllBook();
}

再创建BookMapper.xml进行对数据库的具体操作(一定要记得namespace注册):

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

    <insert id="addBood" parameterType="Books">
        insert into ssmbuild.books (bookName,bookCounts,detail)
        values(#{bookName},#{bookCounts},#{detail});
    </insert>
    
    <delete id="deleteBookById" parameterType="int">
        delete from ssmbuild where bookID = #{bookID} ;
    </delete>

    <update id="updateBook" parameterType="Books">
        update ssmbuild.books set bookName=#{bookName},bookCounts=#{bookCounts},detail=#{detail} = where bookID = #{bookID} ;
    </update>
    
    <select id="queryBookById" resultType="Books">
        select * from ssmbuild.books where bookID=#{bookID} ;
    </select>
    
    <select id="queryAllBook" resultType="Books">
        select * from ssmbuild.books ;
    </select>
    
    
</mapper>

 如果你对上方CRUD的语句不熟悉且写sql语句时没有具体提示的话,参考下方博客:

http://t.csdn.cn/svSVghttp://t.csdn.cn/svSVg

接下来就要再业务层实现我们的业务(业务层调用Mapper层对数据库进行操作):

package com.chenxi.service;

import com.chenxi.pojo.Books;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface BookService {
    //CRUD
    int addBook(Books books);

    int deleteBookById(int id);

    int updateBook(Books books);

    Books queryBookById(int id);

    List<Books> queryAllBook();
}

实现类:

package com.chenxi.service;

import com.chenxi.mapper.BookMapper;
import com.chenxi.pojo.Books;

import java.util.List;

/**
 * @author chenxi
 * @Date 2022/9/23
 * @Description
 */
public class BookServiceImpl implements BookService{
    //service调用mapper层: 组合mapper层
    private BookMapper bookMapper;

    public void setBookMapper(BookMapper bookMapper) {
        this.bookMapper = bookMapper;
    }

    @Override
    public int addBook(Books books) {
        return bookMapper.addBook(books);
    }

    @Override
    public int deleteBookById(int id) {
        return bookMapper.deleteBookById(id);
    }

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

    @Override
    public Books queryBookById(int id) {
        return bookMapper.queryBookById(id);
    }

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

这样我们项目再mabatis框架下和数据库层面就撰写的差不多啦!!!

然后就是把我们的spring框架和springmvc框架整合进来!http://t.csdn.cn/MdjRS

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值