Spring MVC(四)+ Mybatis(一)——Java 代码配置 Spring + SpringMVC、其他配置以及完善细节(静态资源访问、拦截器、等等)、Mybatis基本使用

6 篇文章 1 订阅
5 篇文章 0 订阅

Spring MVC(四)+ Mybatis(一)

一、Java 代码配置 Spring + MVC

1、环境准备

先是依赖导入:
在这里插入图片描述

然后就是正常的分层:
在这里插入图片描述

2、Java 代码配置

跟 xml 配置文件差不多,同样需要两个文件分别配置 MVC 和 Spring:

a、SpringMVCConfig

在这里插入图片描述

b、SpringConfig

//  这是 Spring 的配置文件,作用相当于 applicationContext.xml

@Configuration
@ComponentScan(basePackages = "com.qf.cmf.demo",useDefaultFilters = true,excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,
                classes = Controller.class)})
@PropertySource("classpath:db.properties")  //  导入数据库文件
public class SpringConfig {

    @Value("${db.username}")
    String username;
    @Value("${db.password}")
    String password;
    @Value("${db.url}")
    String url;

    @Bean
    DataSource dataSource(){
        DruidDataSource ds = new DruidDataSource();
        ds.setUsername(username);
        ds.setPassword(password);
        ds.setUrl(url);
        return ds;
    }

    @Bean
    JdbcTemplate jdbcTemplate(){
        return new JdbcTemplate(dataSource());
    }
}

c、WebInit

除了配置那两个文件,还需要一个启动这两个文件的配置:

//      这个配置类的作用类似于 web.xml

//      用不用 Spring,都可以用 Java 代码配置来代替 web.xml 配置
public class WebInit implements WebApplicationInitializer {
    /**
     *  系统启动时,会自动执行该方法。
     */
    public void onStartup(ServletContext sc) throws ServletException {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
//        加载配置文件,可以加载多个配置文件
        ctx.register(SpringMVCConfig.class);
//        配置一个 DispatcherServlet
        ServletRegistration.Dynamic springmvc = sc.addServlet("springmvc", new DispatcherServlet(ctx));
//        配置 servlet-mapping
        springmvc.addMapping("/");
    }
}

正常来讲,这三个配好就运行就没什么问题了。

3、其他配置以及完善细节

虽然说已经整合了 Spring 和 MVC ,但是一些静态资源还是访问不到的。
其他配置比如静态资源访问等等,以及还有一些可以完善的配置细节。

先创建一个拦截器的类:
在这里插入图片描述

创建了这个拦截器,后面只需要配置拦截规则即可。

然后 SpringMVC 可以继承 WebMvcConfigurationSupport 类,继承了这个类,可以方便重写方法来完成拦截规则的设置,如果是注解则没那么方便:
在这里插入图片描述

a、配置静态资源访问

在这里插入图片描述

b、拦截器

在拦截器下面写拦截规则:
在这里插入图片描述
然后把这个拦截器注册到容器中,接着在 SpringMVC配置文件中拿回来,并且写拦截路径:
在这里插入图片描述

c、自定义消息转换器(全局范围)

自定义消息转换器,可以用来格式化日期,从数据库接收的日期格式按照自己想要的格式进行格式化:

日期格式化有两种方法:
一个是 configureMessageConverters;
另一个是 extendMessageConverters。

在这里插入图片描述

d、视图解析器

虽然 jsp 页面可以直接访问,但有时候想通过 Controller 层去访问,单纯只是当作一个跳转页面(跳板)。

Controller 层代码:
在这里插入图片描述
接着就是视图解析器:
在这里插入图片描述
然后结果:
在这里插入图片描述

e、路径映射

上面的那种方法略微麻烦了点,MVC 提供了路径映射:
在这里插入图片描述

f、参数类型转换

比如,实体类中的时间类型是 Date,但是前端传过来的格式是 String,那么这时就需要类型转换。

注意:这里转换的是 key-value 的格式,json格式不用这个!

在这里插入图片描述
把这玩意转成 Date 的对象。

首先,需要实现一个接口,并且需要提供泛型:
在这里插入图片描述
在这里插入图片描述
这里写完还不行,还需要 MVC 配置文件里面配置:

在这里插入图片描述

如果是 xml 配置文件则这么写:
在这里插入图片描述

Mybatis(一)——Mybatis基本使用

二、Mybatis

1、概念

在这里插入图片描述
访问与下载:
在这里插入图片描述

2、环境搭建

在这里插入图片描述

3、mapper 文件

先创建一个实体类(根据数据库的某张表来一一对应属性):
在这里插入图片描述

接着创建 mapper 文件;使用 mybatis 这个框架,就是简化 sql 操作,使得开发者能够尽可能减少甚至不需要再写 sql 语句了。由于 mybatis 已经帮我们封装好了一些增删改查操作,所以我们调用这些封装好的操作前,需要先创建一个 mapper 文件,然后再在 mapper 文件里面操作(先在 resources 文件夹里面创建)
在这里插入图片描述

4、简单的查询例子

先来一个查询例子理解 mybatis :
在这里插入图片描述
既然要查询数据库中的数据,自然需要链接数据库,这里创建 mybatis-config.xml 文件,在里面配置:
在这里插入图片描述

接着就是运行代码:
在这里插入图片描述
然后运行成功,能输出对象信息。

5、封装一个增删改查

a、封装一个查询操作

在刚才的基础上,封装一个增删改查:
在这里插入图片描述
然后运行代码改动部分:
在这里插入图片描述
运行可以发现没有问题。

b、封装一个增加操作

首先是 userdao:
在这里插入图片描述
接着是 mapper 文件:
在这里插入图片描述

然后是测试代码:
在这里插入图片描述
然后运行没有问题。

6、完善文件与代码

能够感觉得到上面的操作中,不仅有点繁琐还有点冗余,比如 dao 层的代码感觉有点重复,比如全类名,mapper 文件中也有全类名;可以感觉到目前的代码并不是最完善的版本。那么继续完善代码:

首先 dao 层不需要那些繁琐的代码,只需要接口,并且文件名不再是 dao 了,而是 mapper:
在这里插入图片描述

然后 mapper 文件那里也需要改:
在这里插入图片描述

这时候,接口里再写一个接口,就可以发现标红:
在这里插入图片描述
这是之前所没有的,因为这里跟 mapper 文件有了对应关系,如果 mapper 文件里面没有对应的方法,这时候这里就会标红。
这时候在标红处 alt+回车 就能自动生成代码:
在这里插入图片描述

然后就是测试代码也发生了变动:
查询就这么写:
在这里插入图片描述

7、mapper 文件位置问题

目前为止的 mapper 文件是放在 resources 文件夹里面,放在里面虽然没有问题,可以运行,但是日常开发中更习惯于跟接口放在一起,但是放在一起后路径就不对劲了,需要改:
在这里插入图片描述
但是这么做还不行,因为编译打包的时候会自动忽略掉 Java 下面的 xml 文件或者 properties 文件,如果不想让程序忽略掉,就还要在 pom.xml 里面配置:
在这里插入图片描述
这么配置完,就可以运行了。

但还有个问题,如果每多一个文件,就需要在 mybatis-config 配置文件里面添加一次,这样很麻烦,还有个简化的配置:
在这里插入图片描述
还有另外一种思路去配置:
在这里插入图片描述
然后 resources 文件夹里面这么创建:
在这里插入图片描述
这么创建的话,pom.xml 也不需要写那些配置代码了,因为后面打包的时候这个路径的文件会自动创建到 java 文件夹里面的对应的路径中去。

8、类的别名问题

同样的,我们也可以用 properties 文件去加载数据库,然后通过以前的那种方式去读取数据库:
在这里插入图片描述

然后 mybatis-config 配置文件里面修改部分代码:
在这里插入图片描述
然后运行没问题。

a、系统别名

接着就是类的别名问题,像返回值的类型,经常要取全路径,很麻烦,所以可以简化:
在这里插入图片描述

简化写法:
在这里插入图片描述

首字母小写,就是系统提供的别名,其他的也差不多。

b、自定义类起别名

像上面的 User 类,就是自定义类,也可以为自定义类起别名,在 mybatis-config 配置文件里面配置:
在这里插入图片描述
也有简化写法:
在这里插入图片描述
这么改了以后,返回值类型就不用写全类名了,直接小写即可,运行同样没有问题!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值