文章目录
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