欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MyBatis基础环境搭建配置、实现对数据库的增删改查

程序员文章站 2022-05-06 20:57:52
...

MyBatis基础

一.概述

​ MyBaits 本是apache的一个开源项目叫iBatis, 2010年这个项目由apache软件基金组织迁移到了google code,并且改名为MyBatis 。MyBatis是一个基于Java的数据持久层(数据库访问层)框架。属于MVC框架中的m层(entity+dao)

核心:MyBaits 把实体类和SQL语句之间建立了映射关系,是一种ORM实现。(ORM Object Relational Mapping 对象关系映射)
MyBatis基础环境搭建配置、实现对数据库的增删改查

二.MyBatis的特点:

​ 1.SQL和java代码分离出去,提供配置(sql)文件

​ 2.提供配置文件,配置与数据库链接以及sql语句

​ 3.Mybatis将基本的JDBC常用接口封装,对外提供操作即可。

​ 4.提供一些数据库操作接口

三.MyBatis环境搭建

基础包结构:

MyBatis基础环境搭建配置、实现对数据库的增删改查

3.1导包

​ 1.pom.xml导入mysql驱动包

<!-- mysql -->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>5.1.47</version>
</dependency>

​ 2.pom.xml导入mybatis.jar

<!-- mybatis -->
<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis</artifactId>
	<version>3.4.2</version>
</dependency>

3.2配置mybatis主配置文件

​ 3.2.1:mybatis-config.xml配置属性、设置、别名

<configuration>
  <!-- environments配置多个数据库链接,id名区分,但实际运行时,只能加载一个 -->
  <environments default="development">
    <environment id="development">
      <!-- 事物管理,默认使用JDBC事物关系 -->
      <transactionManager type="JDBC">
      </transactionManager>      
      <!-- 数据源,链接数据库配置 -->
      <dataSource type="UNPOOLED">
        <property name="driver" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/kj_db?characterEncoding=utf-8" />
        <property name="username" value="root" />
        <property name="password" value="123456"/>
      </dataSource>      
    </environment>  
  </environments>

  <mappers>
    <mapper resource="com/ff/mybatisPro/mapper/StudentMapper.xml" />
  </mappers>
</configuration>

​ 3.2.2:StudentMapper配置编写sql的xml文件

<mapper namespace="com.ff.mybatisPro.mapper.StudentMapper">
	<insert id="saveStudent">
		insert into t_student(num,name,age)values(100,'jim',22)
	</insert>
</mapper>

3.3进行测试

package com.ff.mybatisPro.test;

import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class Test1 {
	public static void main(String[] args) {
		try {
			//读取配置文件
			Reader reader =Resources.getResourceAsReader("mybatis-config.xml");
			//创建SqlSessionFactory,主要用于创建SqlSession
			SqlSessionFactory  sqlSessionFactory =  new 	    SqlSessionFactoryBuilder().build(reader,"development");                
			//创建SqlSession
			SqlSession sqlSession = sqlSessionFactory.openSession();//默认不自动提交事物
			//访问调用mapper中的sql
			sqlSession.insert("com.ff.mybatisPro.mapper.StudentMapper.saveStudent");
			//事物提交
			sqlSession.commit();
			//关闭连接
			sqlSession.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
SqlSessionFactory接口

​ 创建SqlSessionFactory,主要用于创建SqlSession,一旦创建,SqlSessionFactory 就会在整个应用过程中始终存在。所以没有理由去销毁和再创建它,一个应用运行中也不建议多次创建SqlSessionFactory只有一个。如果真的那样做,会显得很耗时。

SqlSession接口

​ mybatis中使用SqlsessionFactory的openSession方法创建。 创建SqlSession,sqlSession负责每次与数据进行会话,多例的,用完后销毁,提供了一系列增、删、改、查的方法。Sqlsession意味着创建数据库会话,该接口中封装了对数据库操作的方法,与数据库会话完成后关闭会话。

3.4运行结果

运行Test1.class文件进行测试,t_student数据库中数据添加成功

MyBatis基础环境搭建配置、实现对数据库的增删改查

四.MapperXML配置

4.1.properties 元素

它们都是外部化,可替代的属性。可以配置在一个典型的 Java 属性文件中,或者通过 properties 元素的子元素进行配置,上图是第一种方式,下列是展示另一种方式 

​ 1.在com.ff.mybatisPro.entity包下创建Student类,属性对应数据库表中列名

2.书写配置文件:db.properties
#database
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///kj_db?characterEncoding=utf8
jdbc.username=root
jdbc.password=123456

#upload file path
path=F:/apache-tomcat-9.0.22/webapps/userFile

​ 3.在mybatis-config.xml中增加如下代码:

<!-- 加载属性文件 -->
<properties resource="config.properties">	
</properties>

​ 4.StudentMapper.xml修改

<insert id="saveStudent" parameterType=" com.ff.mybatisPro.entity.Student">
	insert into t_student(num,name,age)values(#{num},#{name},#{age})
</insert>

​ 5.运行Test1结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dWc9NEAI-1576512888592)(E:\javaEE笔记\img\QQ浏览器截图20191216161804.png)]

4.2.typeAliases 元素

​ 别名是一个较短的 Java 类型的名称。这只是与 XML 配置文件相关联,减少输入多余的完整类名。

1.在com.ff.mybatisPro.entity包下创建Student类,属性对应数据库表中列名

2.在mybatis-config.xml中增加如下代码:

<!-- 给类名配置别名或简称 -->
<typeAliases>
	<typeAlias type="com.ff.mybatisPro.entity.Student" alias="student"/>
</typeAliases>

3.在mybatis-config.xml中增加如下代码:

<insert id="saveStudent" parameterType="student">
	insert into t_student(num,name,age)values(#{num},#{name},#{age})
</insert>

4.运行Test1进行测试,结果上述。

五.实现数据库增删改查

​ 通过MyBatis给数据库增加、删除、修改、查询数据

5.1.添加数据

​ 1.在Test1文件中写如下代码:

@Test
public void insert() {
	try {
		//读取配置文件
		Reader reader =Resources.getResourceAsReader("mybatis-config.xml");
		//创建SqlSessionFactory
		SqlSessionFactory  sqlSessionFactory =  new SqlSessionFactoryBuilder().build(reader,"development");
		//创建SqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();//默认不自动提交事物
            
		//访问调用mapper中的sql
		Student student = new Student();
		student.setName("李白");
		student.setNum(103);
		student.setAge(21);			
				      			                sqlSession.insert("com.ff.mybatisPro.mapper.StudentMapper.saveStudent",student);
		//事物提交
		sqlSession.commit();
		//关闭连接
		sqlSession.close();
	} catch (Exception e) {
		e.printStackTrace();
	}
}

5.2.删除数据

@Test
public void delete() {
	try {
		SqlSession sqlSession = SqlSessionUtils.setsqlSession();
		//访问调用mapper中的sql
		int id = 1;//基本类型直接传值		
		sqlSession.delete("com.ff.mybatisPro.mapper.StudentMapper.deleteStudent",id);
		//事物提交
		sqlSession.commit();
		//关闭连接
		sqlSession.close();
	} catch (Exception e) {
		e.printStackTrace();
	}
}

5.3.修改数据

@Test
public void update() {
	try {
		SqlSession sqlSession = SqlSessionUtils.setsqlSession();
		//访问调用mapper中的sql
		Student student = new Student();
		student.setId(1);
		student.setName("老王");
		student.setNum(103);
		student.setAge(21);			
			sqlSession.insert("com.ff.mybatisPro.mapper.StudentMapper.updateStudent",student);
		//事物提交
		sqlSession.commit();
		//关闭连接
		sqlSession.close();
	} catch (Exception e) {
		e.printStackTrace();
	}		
}

5.4.查询数据

5.4.1查询一条数据

@Test
public void findStudentById() {
	try {
		//读取配置文件
		Reader reader =Resources.getResourceAsReader("mybatis-config.xml");
		//创建SqlSessionFactory
		SqlSessionFactory  sqlSessionFactory =  new SqlSessionFactoryBuilder().build(reader,"development");
		//创建SqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();//默认不自动提交事物
			
		//访问调用mapper中的sql
		int id = 2;//基本类型直接传值		
			sqlSession.selectOne("com.ff.mybatisPro.mapper.StudentMapper.findStudentById", id);
		//事物提交
		sqlSession.commit();
		//关闭连接
		sqlSession.close();
	} catch (Exception e) {
		e.printStackTrace();
	}
}

5.4.2查询全部数据

@Test
public void findStudentList() {
	try {
			//读取配置文件
			Reader reader =Resources.getResourceAsReader("mybatis-config.xml");
			//创建SqlSessionFactory
			SqlSessionFactory  sqlSessionFactory =  new SqlSessionFactoryBuilder().build(reader,"development");
		//创建SqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();//默认不自动提交事物
		
		//访问调用mapper中的sql	
		List<Student> list = sqlSession.selectList("com.ff.mybatisPro.mapper.StudentMapper.findStudentlist");
		//事物提交
		sqlSession.commit();
		//关闭连接
		sqlSession.close();
	} catch (Exception e) {
		e.printStackTrace();
	}
}
相关标签: Java mybatis java