SSM整合

编写思路

数据库-mapper-service-application-前端

参考文档

创建数据库

CREATE TABLE `books` (
  `bookId` int(10) NOT NULL AUTO_INCREMENT COMMENT '书名',
  `bookName` varchar(20) DEFAULT NULL COMMENT '书名',
  `bookCounts` int(11) DEFAULT NULL COMMENT '数量',
  `bookComment` text COMMENT '书的描述',
  PRIMARY KEY (`bookId`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8

编写对应的POJO层

package com.feng.pojo;

public class Book {
    private int bookId;
    private String bookName;
    private int bookCounts;
    private String bookComment;

    public Book() {
    }

    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 getBookComment() {
        return bookComment;
    }

    public void setBookComment(String bookComment) {
        this.bookComment = bookComment;
    }

    public Book(int bookId, String bookName, int bookCounts, String bookComment) {
        this.bookId = bookId;
        this.bookName = bookName;
        this.bookCounts = bookCounts;
        this.bookComment = bookComment;
    }

    @Override
    public String toString() {
        return "Book{" +
                "bookId=" + bookId +
                ", bookName='" + bookName + '\'' +
                ", bookCounts=" + bookCounts +
                ", bookComment='" + bookComment + '\'' +
                '}';
    }
}

编写mapper层 使用mybatis

方法接口

public interface BooksMapper {
    /**
     * 增加一本书
     * @param book
     * @return
     */
    int addBook(@Param("Book") Book book);


    /**
     * 删除一本书
     * @param id
     * @return
     */
    int deleteBook(@Param("bookId") int id);

    /**
     * 修改书的信息
     * @param book
     * @return
     */
    int updateBook( Book book);

    /**
     * 查询所有图书
     * @return
     */
    List<Book> queryBooks();

    /**
     * 查询某本图书  通过图书名
     * @param
     * @return
     */
    List<Book> queryBooksByName(@Param("bookName") String bookName);

    /**
     * 查询某本图书  通过id
     * @param id
     * @return
     */
    @Select("select * from books where bookId=#{id} ")
    Book quaryBookById(@Param("id") int id);
}

对应的sql实现(.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.feng.mapper.BooksMapper">

    <insert id="addBook" parameterType="book">
        insert into ssm.books(bookName,bookCounts,bookComment)
        values (#{Book.bookName},#{Book.bookCounts},#{Book.bookCounts})
    </insert>

    <delete id="deleteBook" parameterType="_int">
        delete from ssm.books where bookId=#{bookId}
    </delete>

    <update id="updateBook" parameterType="Book">
        update ssm.books
        set bookId=#{bookId},bookName=#{bookName},bookCounts=#{bookCounts},bookComment=#{bookComment}
        where bookId=#{bookId}
    </update>

    <select id="queryBooks"  resultType="Book">
        select *
        from ssm.books
    </select>

    <select id="queryBooksByName" parameterType="java.lang.String" resultType="book">
        select *
        from ssm.books
        where bookName=#{bookName}
    </select>
</mapper>

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>


    <!--设置多种功能-->
    <settings>
        <!--使用标准日志工厂-->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
        <!--是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!--开启二级映射-->
        <setting name="cacheEnabled" value="true"/>
    </settings>

    <!--起别名-->
        <typeAliases>
           <package name="com.feng.pojo"/>
        </typeAliases>



<mappers>
    <mapper class="com.feng.mapper.BooksMapper"/>
</mappers>
</configuration>

DB.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
#注意名字不要与连接池中属性名相同
name=root password=

spring与mybatis的整合

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

    <!-- 配置整合mybatis -->
    <!-- 1.关联数据库文件 -->
    <context:property-placeholder location="classpath:DB.properties"/>

    <!-- 2.数据库连接池 -->
    <!--数据库连接池
        dbcp 半自动化操作 不能自动连接
        c3p0 自动化操作(自动的加载配置文件 并且设置到对象里面)
    -->
    <!--<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">-->
        <!--&lt;!&ndash; 配置连接池属性 &ndash;&gt;-->
        <!--<property name="driverClass" value="${driver}"/>-->
        <!--<property name="jdbcUrl" value="${url}"/>-->
        <!--<property name="user" value="${username}"/>-->
        <!--<property name="password" value="${password}"/>-->
        <!--&lt;!&ndash; c3p0连接池的私有属性 &ndash;&gt;-->
        <!--<property name="maxPoolSize" value="30"/>-->
        <!--<property name="minPoolSize" value="10"/>-->
        <!--&lt;!&ndash; 关闭连接后不自动commit &ndash;&gt;-->
        <!--<property name="autoCommitOnClose" value="false"/>-->
        <!--&lt;!&ndash; 获取连接超时时间 &ndash;&gt;-->
        <!--<property name="checkoutTimeout" value="10000"/>-->
        <!--&lt;!&ndash; 当获取连接失败重试次数 &ndash;&gt;-->
        <!--<property name="acquireRetryAttempts" value="2"/>-->
    <!--</bean>-->
    <!--设置数据源-->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${driver}"/>
        <property name="url" value="${url}"/>
        <!--遇到坑了  配置文件中 username 跟下面的不能重名-->
        <property name="username" value="${name}"/>
        <property name="password" value="${password}"/>
    </bean>
    <!-- 3.配置SqlSessionFactory对象 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 注入数据库连接池 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
    </bean>

    <!-- 4.配置扫描Dao接口包,动态实现Dao接口注入到spring容器中 -->
    <!--解释 :https://www.cnblogs.com/jpfss/p/7799806.html-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 注入sqlSessionFactory -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <!-- 给出需要扫描Dao接口包 -->
        <property name="basePackage" value="com.feng.mapper"/>
    </bean>

</beans>

service层

接口(与mapper层一致)

public interface BookService {
    /**
     * 增加一本书
     * @param book
     * @return
     */
    int addBook(@Param("Book") Book book);


    /**
     * 删除一本书
     * @param id
     * @return
     */
    int deleteBook(@Param("bookId") int id);

    /**
     * 修改书的信息
     * @param book
     * @return
     */
    int updateBook( Book book);

    /**
     * 查询所有图书
     * @return
     */
    List<Book> queryBooks();

    /**
     * 查询某本图书  通过图书名
     * @param bookName
     * @return
     */
    List<Book> queryBooksByName(@Param("bookName") String bookName);



    /**
     * 查询某本图书  通过id
     * @param id
     * @return  
     */
    @Select("select * from books where bookId=#{id} ")
    Book quaryBookById(@Param("id") int id);
}

接口实现类

public class BookServiceImpl implements BookService {

    private BooksMapper booksMapper;



    public void setBooksMapper(BooksMapper booksMapper) {
        this.booksMapper = booksMapper;
    }

    @Override
    public int addBook(Book book) {
       return booksMapper.addBook(book);
    }

    @Override
    public int deleteBook(int id) {
        return booksMapper.deleteBook(id);
    }

    @Override
    public int updateBook(Book book) {
        return booksMapper.updateBook(book);
    }

    @Override
    public List<Book> queryBooks() {
        System.out.println("----------------------------------------");
        return booksMapper.queryBooks();
    }

    @Override
    public List<Book> queryBooksByName(String bookName) {
        return booksMapper.queryBooksByName(bookName);
    }

    @Override
    public Book quaryBookById(int id) {
        return booksMapper.quaryBookById(id);
    }
}

spring-service配置文件

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

    <context:component-scan base-package="com.feng.service"/>
    <!-- 扫描service相关的bean -->
    <context:component-scan base-package="com.feng.service" />

    <!--BookServiceImpl注入到IOC容器中-->
    <bean id="BookServiceImpl" class="com.feng.service.BookServiceImpl">
        <property name="booksMapper" ref="booksMapper"/>
    </bean>

    <!--&lt;!&ndash; 配置事务管理器 &ndash;&gt;-->
    <!--<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">-->
        <!--&lt;!&ndash; 注入数据库连接池 &ndash;&gt;-->
        <!--<property name="dataSource" ref="dataSource" />-->
    <!--</bean>-->
</beans>

controller层

控制器

@Controller
@RequestMapping("/book")
public class BookController {

    @Autowired
    @Qualifier(value = "BookServiceImpl")
    private BookService bookService;

    /**
     * 查询所有书籍
     * @param model
     * @return
     */
    @RequestMapping("/allBook")
    public String allBook(Model model){

        List<Book> list = bookService.queryBooks();
        model.addAttribute("list",list);
        return  "bookWeb";
    }

    /**
     * 书名查找
     * @param name
     * @param model
     * @return
     */
    @RequestMapping("/quaryByName")
    public String bookByName( String name,Model model){
        System.out.println(name);
        List<Book> list = bookService.queryBooksByName(name);
        model.addAttribute("list",list);
        return  "bookWeb";
    }

    /**
     * 删除图书信息
     * @param id
     * @return
     */
    @RequestMapping("/del/{id}")
    public String deleteBook(@PathVariable("id") int id){
        bookService.deleteBook(id);
        return "forward:/book/allBook";
    }

    /**
     * 转向修改页面
     * @param id
     * @return
     */
    @RequestMapping("/toAlter/{id}")
    public String alter(@PathVariable("id") int id,Model model){
        Book book = bookService.quaryBookById(id);
        model.addAttribute("Book",book);
        return  "alter";
    }

    /**
     * 修改书籍信息
     * @param book
     * @return
     */
    @RequestMapping("/update")
    public String change(Book book){
        System.out.println("Book======"+book);
        int i = bookService.updateBook(book);
        return  "forward:/book/allBook";
    }

    /**
     * 转向添加书籍页面
     * @return
     */
    @RequestMapping("/toAdd")
    public String toAdd(){
        return "addBooks";
    }

    /**
     * 增加书籍
     * @param book
     * @return
     */
    @RequestMapping("/addBook")
    public  String Add(Book book){
        bookService.addBook(book);
        return "forward:/book/allBook";
    }


}

spring-servlet配置文件

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

    <!--让springmvc 不处理静态资源 .css .js .mp4 .mp3-->
        <!-- .静态资源默认servlet配置-->
        <mvc:default-servlet-handler/>
    <!--mvc注解驱动  包括了 操作器映射器  操作器适配器 一般使用@RequesrMappering注解来完成映射关系-->
    <mvc:annotation-driven>

        <!--解决JASON的乱码问题   直接复制站IE-->
        <mvc:message-converters register-defaults="true">
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg value="UTF-8"/>
            </bean>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper">
                    <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
                        <property name="failOnEmptyBeans" value="false"/>
                    </bean>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

    <!--视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">

        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <!-- 4.扫描web相关的bean -->
    <context:component-scan base-package="com.feng.controller" />
</beans>

配置文件整合

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

    <import resource="spring-mapper.xml"/>
    <import resource="spring-service.xml"/>
    <import resource="spring-servlet.xml"/>

</beans>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值