Java-Mybatis-系列一-mybatis的创建与使用

Mybatis简介

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatement、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

mybatis资料

官网: http://www.mybatis.org/mybatis-3/

开发jar包下载: https://github.com/mybatis/mybatis-3/releases

Mybatis整合Spring jar包下载: https://github.com/mybatis/spring/releases

Mybatis创建思路

Mybatis配置文件:mybatis-config.xml(建议名字,自己取的)

映射文件:Sql映射xml文件

创建流程:SqlSessionFactory - SqlSession

jar 包

核心jar包:mybatis-x.x.x.jar

mysql jar 包:mysql-connector-java-x.x.x-bin.jar

部署jar包

在类路径下新建一个lib目录,把jar包放进lib目录

Eclipse : 右键jar包 - Source - build path

Idea : 右键jar包 - add a library

mybatis配置文件

在src目录下新建一个文件 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">
		<!-- 使用jdbc事务管理-->
			<transactionManager type="JDBC" />
		<!-- 数据库连接池-->
			<dataSource type="POOLED">
				<!-- 配置数据库驱动,mysql 8.0 以上版本 为 com.mysql.cj.jdbc.Driver-->
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<!-- 配置数据库路径,换成自己的, ip/数据库名称?编码格式,localhost 为 本地地址 -->
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
				<!-- 配置数据库用户名,换成自己的-->
				<property name="username" value="root" />
				<!-- 配置数据库密码,换成自己的-->
				<property name="password" value="12345" />
			</dataSource>
		</environment>
	</environments>
</configuration>

创建实体类

假设数据库有一张表 user,存在两个字段 id , name

实体类

public class User{
    
    
	int id;
	String name;
	public int getId(){
    
    
		return id;
	}
	public void setId(int id){
    
    
		this.id=id;
	}
	public String getString(){
    
    
		return name;
	}
	public void setString(String name){
    
    
		this.name=name;
	}
}

数据库表映射到实体类,原理是通过访问实体类的setter和getter方法

创建映射文件

命名一般为:xxxMapper.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="test">
	<select id="selectById" parameterType="int" resultType="com.shop.domain.User">
	select * from tb_user where id=#{id}
	</select>
</mapper>

namespace :命名空间,避免代码混乱
id :在命名空间中唯一的标识符,调用这个语句的功能时使用id引用
parameterType:传入的参数
resultType: 返回的值,要加上全路径,可以是一个对象,但是sql语句返回的列必须与对象属性名称相同,可以起别名使名称一致

select id,name from user

此处 sql 语句 返回字段 id , name 要和 实体类 User 属性 id , name 名称一致

mybatis-config.xml 添加 mapper文件关联

添加这一段到 mybatis-config.xml

<mappers>
	<!-- 映射Mapper文件的路径 -->
	<mapper resource="com/shop/domain/UserMapper.xml"/>
</mappers>

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">
		<!-- 使用jdbc事务管理-->
			<transactionManager type="JDBC" />
		<!-- 数据库连接池-->
			<dataSource type="POOLED">
				<!-- 配置数据库驱动,mysql 8.0 以上版本 为 com.mysql.cj.jdbc.Driver-->
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<!-- 配置数据库路径,换成自己的, ip/数据库名称?编码格式,localhost 为 本地地址 -->
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
				<!-- 配置数据库用户名,换成自己的-->
				<property name="username" value="root" />
				<!-- 配置数据库密码,换成自己的-->
				<property name="password" value="12345" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
	<!-- 映射Mapper文件的路径 -->
	<mapper resource="com/shop/domain/UserMapper.xml"/>
</mappers>
</configuration>

编写测试类

public class TestDemo{
    
    
	public static void main(String[] args){
    
    
		//mybatis配置文件名
		String config ="mybatis-config.xml";
		//读取mybatis配置文件
		InputStream  is = Resources.getResourceAsStream(config);
		
		//创建一个SqlSessionFactory对象,此对象可以完成对配置文件的读取,build有几个重载方法,这里使用参数为 InputStream 类型的 build 方法
		SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(is);

		//创建 一个 SqlSession对象 
		SqlSession session = sf.openSession();
		
		//方法一
		//接下来就可以执行sql操作了
		try {
    
    
			//Mapper文件路径+ Mapper文件中sql语句的 id 值
			User user = (User) session.selectOne(
			"com.shop.domain.UserMapper.selectById", 1);
		} finally {
    
    
			session.close();
		}


		//方法二
		try {
    
    
			//调用mapper文件进行数据操作
			UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.selectById(1);
		} finally {
    
    
			session.close();
		}
	}

简单的一个mybatis查询就完成了

猜你喜欢

转载自blog.csdn.net/LegendaryChen/article/details/121847997