Maven的配置及Mybatis的使用
Maven的配置及Mybatis的使用
Maven的配置
-
官网下载相应版本的maven二进制分发归档文件:http://maven.apache.org/download.cgi
-
解压并保存到相应路径,并配置该文件下的conf/setting.xml文件中的localRepository、mirror、profile,分别如图所示:
localRepository:
mirror:
profile: -
打开高级系统设置里的环境变量:
(1)配置系统变量,如图所示(变量名:MAVEN_HOME, 变量值为官网下载的文件解压后的保存路径):
(2)找到Path变量,新增值,如图所示: -
配置成功后在命令行界面输入mvn -version可查看版本号,如图所示:
-
在eclipse中配置maven,点击工具栏中的Window, 选择Preferences, 如图所示,找到Maven,分别配置Installations和User Settings。
(1)Installations中添加maven的保存路径。
(2)User Settings中配置conf下的setting文件以及本地仓库地址(与setting.xml中中的值一致),如图所示:
Mybatis
- 官网定义:
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 - 使用:
maven工程目录结构如图所示:
在pom.xml文件中添加依赖,可在百度搜索mvnrepository进入(https://mvnrepository.com/),如图所示,在搜索框输入所需依赖,点击搜索后找到相关依赖选择版本进行复制。
其中mybatis的依赖如下:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>x.x.x</version>
</dependency>
其次还需添加mysql的依赖:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
mybatis的使用
- 如图所示在src/main/resources下创建mybatis-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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/xxx?serverTimezone=UTC"/>
<property name="username" value=""/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<mappers>
<!--com/example/demo/UserMapper.xml为映射UserMapper.xml的路径 -->
<mapper resource="com/example/demo/UserMapper.xml"/>
</mappers>
</configuration>
其中resource="com/example/demo/UserMapper.xml"为UserMapper.xml的路径,如图所示:
UserMapper.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.example.demo.UserMapper">
<insert id="addUser">
insert into users(userId,userPassword,userName,userSchool,userRole) values('88888','88888','ldl','东北大学','teacher');
</insert>
</mapper>
对于像 UserMapper 这样的映射器类来说,还有另一种方法来完成语句映射。 它们映射的语句可以不用 XML 来配置,而可以使用 Java 注解来配置。比如,上面的 XML 示例可以被替换成如下的配置:
package org.mybatis.example;
public interface BlogMapper {
@Select("SELECT * FROM blog WHERE id = #{id}")
User addUser(int id);
}
从 XML 中构建 SqlSessionFactory,从 SqlSessionFactory 再中获取 SqlSession
每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。
从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。 但也可以使用任意的输入流(InputStream)实例,比如用文件路径字符串或 file:// URL 构造的输入流。MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,使得从类路径或其它位置加载资源文件更加容易。
测试代码:
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String resource = "mybatis-config.xml";//resource下的xml文件的路径,此处mybatis-config.xml为recourse下的根路径
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//从 SqlSessionFactory 中获取 SqlSession
try (SqlSession session = sqlSessionFactory.openSession()) {
//此处的User类型与UserMapper.xml中的类型对应
//"com.example.demo.UserMapper.addUser"中的addUser为UserMapper.xml标签中的id属性
User user = (User) session.selectOne("com.example.demo.UserMapper.addUser", 101);
}
}
SqlSessionFactoryBuilder、SqlSessionFactory和SqlSession的区别
SqlSessionFactoryBuilder
这个类可以被实例化、使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了。 因此 SqlSessionFactoryBuilder 实例的最佳作用域是方法作用域(也就是局部方法变量)。 你可以重用 SqlSessionFactoryBuilder 来创建多个 SqlSessionFactory 实例,但最好还是不要一直保留着它,以保证所有的 XML 解析资源可以被释放给更重要的事情。
SqlSessionFactory
SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例。 使用 SqlSessionFactory 的最佳实践是在应用运行期间不要重复创建多次,多次重建 SqlSessionFactory 被视为一种代码“坏习惯”。因此 SqlSessionFactory 的最佳作用域是应用作用域。 有很多方法可以做到,最简单的就是使用单例模式或者静态单例模式。
SqlSession
每个线程都应该有它自己的 SqlSession 实例。SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。 绝对不能将 SqlSession 实例的引用放在一个类的静态域,甚至一个类的实例变量也不行。 也绝不能将 SqlSession 实例的引用放在任何类型的托管作用域中,比如 Servlet 框架中的 HttpSession。 如果你现在正在使用一种 Web 框架,考虑将 SqlSession 放在一个和 HTTP 请求相似的作用域中。 换句话说,每次收到 HTTP 请求,就可以打开一个 SqlSession,返回一个响应后,就关闭它。 这个关闭操作很重要,为了确保每次都能执行关闭操作,你应该把这个关闭操作放到 finally 块中。 下面的示例就是一个确保 SqlSession 关闭的标准模式:
try (SqlSession session = sqlSessionFactory.openSession()) {
// 你的应用逻辑代码
}
在所有代码中都遵循这种使用模式,可以保证所有数据库资源都能被正确地关闭。
上一篇: 基于maven的web项目调试问题 博客分类: Maven 问题maventomcat
下一篇: IntelliJ IDEA创建Spring SpringMVC MyBatis整合Maven项目,并提交至Github
推荐阅读
-
Maven的配置及Mybatis的使用
-
Spring 依赖注入三种方式的实现,及循环依赖问题的解决(源码+XML配置)
-
mybatis分页和PageHelper插件的使用
-
idea使用maven的注意事项
-
MyBatis中乐观锁插件和分页插件的使用
-
mybatis:基于注解的环境搭建与基本使用
-
os.environ[‘CUDA_VISIBLE_DEVICES‘]使用指定的GPU及GPU显存
-
实时操作系统(RTOS)REGINA的使用及说明
-
maven 使用遇到的问题 博客分类: maven mavenTomcat嵌入式
-
使用elementUI的日期时间选择器+下拉菜单+tab切换+table表格完成排行榜的切换及按年月周查询(部分代码)