IDEA使用Mybatis/Spring/SpringMVC分别小Demo

1. 使用Mybatis

1.1创建Maven项目

步骤:右键单击->New Module->选中Maven即可

1.2 在pom.xml中导包

 <dependencies>
        <!-- mybatis核心包-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.12</version>
        </dependency>
        <!--junit测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <!--日志文件管理-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.1</version>
        </dependency>
    </dependencies>

1.3 创建数据库编写表

推荐使用Navicat,创建一个新的数据库,然后利用生成语句

create table students(
 `id` int(10) primary key not null auto_increment,
 `name` varchar(20) not null,
 `age` varchar(2) not null
)
insert into students values(default, 'caoduanxi','22');

1.4 编写实体类

在maven项目的java包下创建package命名为pojo,写入实体类

public class Student {
    private int id;
    private String name;
    private int age;

    public Student(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
	//省略了响应的set和get方法  
}

1.5 创建及配置mybatis-config.xml

在Resources下创建mybatis-config.xml文件,配置内容如下

因为pom.xml中导入的是8.0.12的mysql,所以driver这里需要在中间加入cj

如果运行有报错时区的话,在url的尾部加上serverTimezone=UTC

<?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="default">
        <environment id="default">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <!--配置数据库连接池属性-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"></property>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/people?serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="******"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="mapper/studentMapper.xml"></mapper>
    </mappers>
</configuration>

1.6 创建mapper.xml

在Resources下创建一个文件夹mapper,里面创建mapperStudent.xml,内容配置如下:

namespace是一个称谓,可以设置任意的,但是需要保证通过这个能够扎到selectAll这条sql语句

<?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="org">
    <select id="selectAll" resultType="pojo.Student">
        select * from people
    </select>
</mapper>

1.7 测试代码

public static void main(String[] args){
        try {
            //获取资源文件流
            InputStream resource = Resources.getResourceAsStream("mybatis-config.xml");
            //使用工厂设计模式
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resource);
            //生产SqlSession
            SqlSession sqlSession = factory.openSession();
            List<Student> list =  sqlSession.selectList("org.selectAll");
            for (Student student : list) {
                System.out.println(student+" ");
            }
            sqlSession.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

2. 使用Spring

单击右键,new Module,选择Spring默认就好,后面选项选择download

2.1 Spring

Spring主要的作用就是控制反转,控制的是对象的创建过程,反转的是创建对象以前是人为现在是Spring,作用:解耦,程序员不需要管理对象,只需要直接使用就好,但是需要在Spring容器中配置。

2.2 创建一个小示例

public class HelloWorld {

    private String name;
    public HelloWorld(){
        System.out.println("construct a object");
    }
    public HelloWorld(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        System.out.println("注入名字");
        this.name = name;
    }

    public void sayHello(){
        System.out.println("Hello,"+this.name+",hello world!");
    }
}

2.3 配置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
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean name="helloWorld" class="HelloWorld">
        <property name="name" value="任意内容"></property>
    </bean>

</beans>

2.4 测试代码

public class Test {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        HelloWorld bean = (HelloWorld)context.getBean("helloWorld");
        bean.sayHello();
    }
}

3. 使用SpringMVC

3.1 SpringMVC

与Spring的项目创建过程基本是一致的,只是需要选择MVC,建议直接使用Maven来创建,因为导包比较简单

SpringMVC的运行流程:

1.客户端提交请求到DispathcerServlet

2.由DispathcerServlet控制器寻找一个或多个的HandlerMapping,由其找到相应的处理请求的Controller

3.DispatcherServlet将请求提交给Controller

4.Controller调用业务逻辑处理之后返回ModelAndView给DispathcerServlet

5.DispatcherServlet寻找一个或多个的ViewResolver视图解析器,视图解析器负责找到ModelAndView指定的视图

6.视图负责将结果响应到客户端

在这里插入图片描述

3.2 导入包

在这里插入图片描述

3.3 创建项目几个.xml文件

首先是web.xml文件,其中是已经配置好的,只有其中的url-pattern根据所需求的拦截进行修改

具体如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <!--添加一个编码器-->
    <filter>
        <filter-name>encoding</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>encoding</filter-name>
        <url-pattern>/</url-pattern>
    </filter-mapping>
</web-app>

此时可以配置tomcat服务器,启动,可以看到index.jsp加载的页面(注意需要在默认的index.jsp文件中写点内容,这样更加直观)

3.4 根据输入的url访问

在src下创建controller包,其中编写类:

@Controller
public class TestController {
    @RequestMapping("/hello")
    public String printHello(ModelMap modelMap){
        modelMap.addAttribute("words","hello world!");
        return "hello";
    }
}

为了能够实现访问,需要在dispatcher-servlet.xml中设置,以便处理器能够处理这个请求。

添加了对controller包的扫秒,后面的是视图解析,将视图解析为web的内部资源,当我们的controller中返回return "hello"的时候会自动添加上前缀和后缀,这样可以直接找打需要跳转的jsp页面。

<?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:http="http://www.springframework.org/schema/c"
       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">

    <context:component-scan base-package="controller"></context:component-scan>

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/"></property>
        <property name="suffix" value=".jsp"></property>

    </bean>
</beans>

3.5 hello.jsp

在jsp中,可以直接利用${words}取出controller中model中设置的值,也就是"hello world!"

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值