SSM整合问题合集

1.在新建数据库时里的排序规则和字符集

字符集一般选择 utf-8
排序规则的选择需要注意的是,utf8_general_ci、utf8_general_cs、utf8_bin的区别,ci全称为case insensitive,意思是大小写不敏感,cs区分大小写,bin是以二进制数据存储,且区分大小写。如果要求数据库不区分大小写,则需要选择ci结尾的。

2.数据库连接池是干什么的

创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。有了数据库连接池之后,在程序初始化的时候,集中创建多个数据库连接,并把他们集中管理,供程序使用,可以保证较快的数据库读写速度,还更加安全可靠。数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个。
常用的数据库连接池:
DBCP 数据库连接池
C3P0 数据库连接池

3.静态资源导出问题

标准的Maven项目都会有一个resources目录来存放我们所有的资源配置文件,但是我们往往在项目中不仅仅会把所有的资源配置文件都放在resources中,同时我们也有可能放在项目中的其他位置,那么默认的maven项目构建编译时就不会把我们其他目录下的资源配置文件导出到target目录中,就会导致我们的资源配置文件读取失败,从而导致我们的项目报错出现异常,比如说尤其我们在使用MyBatis框架时, 往往Mapper.xml配置文件都会放在dao包中和dao接口类放在一起的,那么执行程序的时候,其中的xml配置文件就一定会读取失败,不会生成到maven的target目录中,所以我们要在项目的pom.xml文件中进行设置,并且我建议大家,每新建一个maven项目,就把该设置导入pom.xml文件中,以防不测!!!

  <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

4 mapper.xml文件里写sql时候没有提示

解决方法

5 Web项目中,引入Spring需要配置一个监听器contextLoaderListener

方法,原因

6 Mybatis和Spring的整合

首先需要导一个包:mybatis-spring
版本需要符合以下要求
在这里插入图片描述
编写spring的配置文件:spring-dao.xml

6.1 首先需要配置数据源:dataSource

在这里插入图片描述
原来的数据源写在Mybatis的配置文件中,此操作是将mybatis整合到spring中,所以mybatis中配置的数据源就可以删除了

6.2 sqlSessionFectory

在没有配置sqlSessionFectory操作之前,在测试代码中需要编写以下的代码
在这里插入图片描述
在spring中配置sqlSessionFectory操作如下
在这里插入图片描述
ref中的dataSource是第一步配置的数据源
下面的configlocation和mapperLocations是和mybatis连接,当写了这个之后mybatis中的配置文件中就不需要和mapper文件连接了,
mybatis中就剩下别名和日志配置文件了,如果不需要日志配置文件可以不写

6.3 sqlSessionTemplate

在这里插入图片描述
这里的ref是第二步写的
我们还要写一个类,实现mapper接口
在这里插入图片描述
以前的此类代码都是在测试类中写的。
最后我们还要将实现的该类写在spring的bean中
在这里插入图片描述

6.4 总结

最后在测试类中就只剩了这些,我们会发现,没有发现Mybatis的相关代码,会显示的比较整洁
在这里插入图片描述
最后将所有的配置文件中需要写什么内容在进行梳理一下:
mybatis的配置文件: 别名,和日志配置
mybatis的mapper文件:sql语句
spring 的配置文件:进行上面的三个操作:和配bean.
如果想要更加的分工明确:
可以再创建一个applicationContext.xml文件 它里面专门配bean,另外的spring-dao配置文件就只负责和mybatis的整合,因为里面的代码都是死的
applicationContext.xml只需要将spring-dao.xml文件导入就可以了
在这里插入图片描述
这里我是看了其他视频学习的spring和Mybatis的整合,于此项目无关

7 autowired 和 qualifier

autowired 是进行自动注入的,但是当一个接口有两个是实现的时候,需要指定一个进行注入的时候,就使用qualifier注释

8.RequestMapping下映射的类的参数与前端name属性的注意事项

RequestMapping下映射的类的参数必须和前端form表单中的name属性的值一模一样

mapper文件中的SQL语句:
因为这里需要一个String类型的参数

 <select id="queryBookByName" resultType="Books" parameterType="String">
                select * from ssmproject.books where bookName like '%${bookName}%'
</select>

controller:
这里定义了参数queryBookByName

    @RequestMapping("/queryBookByName")
    public String queryBookByName(String queryBookByName,Model model){
        List<Books> books = bookService.queryBookByName(queryBookByName);
        System.out.println(books);
        List<Books> list=new ArrayList<Books>();
        list.addAll(books);
        if(books==null){
            list = bookService.queryAllBooks();
        }
        model.addAttribute("list",list);
        return "allBook";
    }

前端的form表单:
name的值等于queryBookByName

  <%--查询书籍
                1.根据姓名查询--%>
                <form action="${pageContext.request.contextPath}/book/queryBookByName" method="get" style="float: right" class="form-inline">

                    <input type="text" name="queryBookByName" class="form-control" placeholder="请输入你要查询的书籍名字">
                    <input type="submit" value="查询" class="btn btn-primary">
                </form>

具体原因还不是特别的懂

9.项目部署注意事项:

MySQL版本:5.7.20
tomcat:8.5.47
jdk:1.8
我数据库创建的名称是SSMProject,版本是5.7.20,如果你的是8以上的,需要在url的最后加上时区设置
如果你的不是,需要将properties文件更改一下
在这里插入图片描述

完整代码网盘

链接:https://pan.baidu.com/s/12gAGiBn7LVSpiyVoiqvFBg
提取码:6666
此项目是根据B站的UP主 遇见狂神说 敲的代码,
https://www.bilibili.com/video/BV1RE41127rv?t=1554&p=1


2020年11月19日20:42:27,代码忘完了,来回顾一下
1.创建数据库,插入数据
2.创建项目,编写pom文件,mybatis,spring和mybatis-spring的配置文件需要符合版本要求。spring-webmvc会把spring的相关jar包也导进来。
3.编写实体类,mapper文件,mapper接口,编写mybatis的配置文件,因为这里将mybatis和spring整合了,所以mybatis的配置文件中不用写那么多,只写了别名处理和mapper连接。
4.编写spring-mybatis.xml文件,之前的mybatis的配置文件要做的事这里都可以做

  • 首先是关联数据库的配置文件database.properties。

  • 再连接池,class中的值要和pom.xml中导入的数据库连接池符合如果忘记了他的全类名,可以在导入的jar包中查看,找到自己导入的数据库连接池,找到里面有一个以DataSource结尾的类,复制它的全类名。

  • sqlSessionFactory的注入

    <bean id="sqlSessionFectory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <!--       绑定Mybatis的配置文件 -->
            <property name="configLocation" value="classpath:mybatis-config.xml"/>
        </bean>
    

    编写过这个之后就不用了之前的复杂操作了

    Reader reader = Resources.getResourceAsReader("Mybatis.xml");
    
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
    

    具体的讲解:https://blog.csdn.net/u013412772/article/details/73648537

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值