Maven的配置及Mybatis的使用

Maven的配置

  1. 官网下载相应版本的maven二进制分发归档文件:http://maven.apache.org/download.cgi
    在这里插入图片描述

  2. 解压并保存到相应路径,并配置该文件下的conf/setting.xml文件中的localRepository、mirror、profile,分别如图所示:
    localRepository:在这里插入图片描述
    mirror:
    在这里插入图片描述
    profile:
    profiles标签内的profile

  3. 打开高级系统设置里的环境变量:
    (1)配置系统变量,如图所示(变量名:MAVEN_HOME, 变量值为官网下载的文件解压后的保存路径):
    在这里插入图片描述
    (2)找到Path变量,新增值,如图所示:
    在这里插入图片描述

  4. 配置成功后在命令行界面输入mvn -version可查看版本号,如图所示:
    在这里插入图片描述

  5. 在eclipse中配置maven,点击工具栏中的Window, 选择Preferences, 如图所示,找到Maven,分别配置Installations和User Settings。
    (1)Installations中添加maven的保存路径。在这里插入图片描述
    (2)User Settings中配置conf下的setting文件以及本地仓库地址(与setting.xml中中的值一致),如图所示:
    在这里插入图片描述

Mybatis

  1. 官网定义:
    MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
  2. 使用:
    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的使用

  1. 如图所示在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()) {
  // 你的应用逻辑代码
}

在所有代码中都遵循这种使用模式,可以保证所有数据库资源都能被正确地关闭。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值