初识mybaits和SSM整合

mybaits

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

mybaits的使用

代码如下:
1.test

package com.zhongruan.test;

import com.zhongruan.bean.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;

public class Test01 {
   public static void main(String[] args) {
       // 加载Mybatis的配置文件
       InputStream inputStream = Test01.class.getClassLoader().getResourceAsStream("config.xml");
       // 得到Mybatis的核心类
       SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
       SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
       SqlSession sqlSession = sqlSessionFactory.openSession();

       // 指定调用的方法
       String statement = "com.zhongruan.dao.UserDao.save";
       // 指定需要存储的对象
       User user = new User();
       user.setUsername("tianqi");
       user.setPassword("111111");

       // 调用方法
       sqlSession.insert(statement, user);
       sqlSession.commit();
   }
}
  1. userdao
package com.zhongruan.dao;

import com.zhongruan.bean.User;

public interface UserDao {
    void save(User user);
}

config.xml

<?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>
    <!-- 配置mybatis的运行环境 -->
    <environments default="">
        <environment id="development">
            <!-- 配置JDBC事务管理 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置数据源  数据源采用数据库连接池技术  c3p0  druid-->
            <dataSource type="POOLED">
                <!-- 数据库相关配置 -->
                <!-- mysql 8 以上驱动 -->
                <!--<property name="driver" value="com.mysql.cj.jdbc.Driver"/>-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/whlg?serverTimezone=Asia/Shanghai"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
            </dataSource>

        </environment>
    </environments>

</configuration>

4.user类

public class User {
    private int id;
    private String username;
    private String password;
    // 构造方法  toString getter setter 省略
}
  1. 结果
    在这里插入图片描述

SSM

SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。

SSM整合

代码如下
pom.xml

<dependencies>
    <!-- SpringMVC -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.2.7.RELEASE</version>
    </dependency>

    <!-- SpringJDBC -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.2.7.RELEASE</version>
    </dependency>

    <!-- SpringAOP -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>5.2.7.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
        <version>5.2.7.RELEASE</version>
    </dependency>

    <!-- Mybatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.5</version>
    </dependency>

    <!-- Mybatis整合Spring -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>2.0.5</version>
    </dependency>

    <!-- mysql驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.20</version>
    </dependency>

    <!-- c3p0 连接池技术  -->
    <dependency>
        <groupId>c3p0</groupId>
        <artifactId>c3p0</artifactId>
        <version>0.9.1.2</version>
    </dependency>

    <!-- JSTL jsp standred Tag library -->
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <!-- Servlet API-->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>

</dependencies>

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
    </resources>
</build>
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>

  <!-- Spring -->
  <!-- 1. 启动Spring -->
  <!-- context  上下文 ==》 运行环境 -->
  <!-- 1.1 配置全局参数 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <!-- classpath 相当于 resources路径  -->
    <param-value>classpath: spring.xml</param-value>
  </context-param>
  <!-- 1.2 配置监听器 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <!-- SpringMVC -->
  <!-- 2. 启动 SpringMVC -->
  <!-- 2.1. 配置核心servlet  DispathcerServlet-->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 2.1.1 引入 SpringMVC 的配置文件 -->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
  </servlet>

  <!-- 2.2 配置servlet的映射 -->
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <!-- / 表示监听了 所有的请求 -->
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <!-- 3. 字符编码过滤器 -->
  <filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>

  <filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!-- 4. 加载静态资源 -->
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.js</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.jpg</url-pattern>
  </servlet-mapping>
  
</web-app>

spring.xml

<?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:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
">

    <!-- 整合Mybatis -->
    <!-- 1. 配置数据源 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <!-- 1.1 配置数据库基本参数 -->
        <property name="jdbcUrl" value="jdbc:mysql:///whlg?serverTimezone=Asia/Shanghai"/>
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>
        <property name="user" value="root"/>
        <property name="password" value="password"/>
        <!-- 1.2 配置连接池参数 -->
        <property name="initialPoolSize" value="5"/>
        <property name="maxPoolSize" value="10"/>
    </bean>

    <!-- 2. 配置mybatis中的核心类  将sqlSessionFactory 交给Spring管理 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 引入数据源 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 注册映射文件 -->
        <property name="mapperLocations" value="classpath:com/zhongruan/repository/*.xml"/>
        <!-- 引入mybatis的配置文件  -->
        <property name="configLocation" value="classpath:config.xml"/>
    </bean>

    <!-- 3. mybatis 会将接口实现   此时需要将实现类交给Spring管理 -->
    <!-- 将实现类 放置到IOC容器中 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.zhongruan.repository"/>
    </bean>

</beans>

springmvc.xml

<?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-3.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">

    <!-- 1. 启动注解驱动 -->
    <mvc:annotation-driven></mvc:annotation-driven>

    <!-- 2. 扫描业务代码 -->
    <context:component-scan base-package="com.zhongruan"/>

    <!-- 3. 配置视图解析器 -->
    <!-- 视图解析器的作用: 将逻辑视图转换成物理视图   "index" ==> /index.jsp -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 前缀 -->
        <property name="prefix" value="/"/>
        <!-- 后缀 -->
        <property name="suffix" value=".jsp"/>
    </bean>
    
</beans>

config.xml

<?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>

</configuration>

user

public class User {
    private int id;
    private String username;
    private String password;
}

userdao

package com.zhongruan.dao;

import com.zhongruan.bean.User;

import java.util.List;

public interface UserDao {
    // 查询全部用户 的方法
    List<User> findAll();

    // List集合的接口  <User>  泛型就是 将运行期间的错误 转换到 编译期间    User.login()   Student.login()
}

userdao.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.zhongruan.dao.UserDao">
    <select id="findAll" resultType="com.zhongruan.bean.User">
        select * from t_user
    </select>
</mapper>

UserService

package com.zhongruan.service;

import com.zhongruan.bean.User;

import java.util.List;

public interface UserService {
    List<User> findAll();
}

UserServiceImpl

package com.zhongruan.service.impl;

import com.zhongruan.bean.User;
import com.zhongruan.dao.UserDao;
import com.zhongruan.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    UserDao userDao;

    @Override
    public List<User> findAll() {
        return userDao.findAll();
    }
}

UserHandler

package com.zhongruan.controller;

import com.zhongruan.dao.UserDao;
import com.zhongruan.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("/user")
public class UserHandler {
    // @Controller  表示UserHandler类 是一个控制器类(处理请求)
    @Autowired
    UserDao userDao;

    @Autowired
    UserService userService;

    @RequestMapping("/findAll")
    public ModelAndView index() {
        System.out.println("index方法执行 ");
        ModelAndView mv = new ModelAndView();
        mv.addObject("list", userDao.findAll());
        mv.setViewName("list");
        return mv;
        // ModelAndView   数据视图
        // return "index";
    }


    @RequestMapping("/findAll01")
    public ModelAndView index01() {
        ModelAndView mv = new ModelAndView();
        mv.addObject("list", userService.findAll());
        mv.setViewName("list");
        return mv;
    }
}

list.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%-- c:forEach 实现遍历 --%>
    <%-- EL表达式 --%>
    <c:forEach items="${list}" var="user">
        ${user}
    </c:forEach>
    <%-- EL表达式 jsp页面默认是忽略的  --%>
</body>
</html>

结果
最开始

通过老师指导后
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值