Mybatis学习——创建一个Mybatis工程,连接mysql

MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。但是代价就是需要繁琐的配置,但是这些配置都差不多,不过都很复杂,借助插件可以更方便地写配置文件,也可以配置的模板记录下来,以后用到了直接抄了。

安装mybatis

可以去mybatis的github下载页面(可能需要梯子)下载mybatis的jar包,还送一本说明书。也可用直接用maven下载。将下面的代码复制到maven的配置文件里面。

<dependency>  
<groupId>org.mybatis</groupId>  
<artifactId>mybatis</artifactId>  
<version>x.x.x</version> </dependency>
//目前最新版本是3.5.4(2020年2月24日)

配置mybatis

以mysql自带world数据库中city表为例
首先创建一个java工程,在这里插入图片描述
导入mybatis和mysql的jar包在这里插入图片描述

依次创建下面需要创建的文件

需要创建的文件作用
与表相映射的类 xxx.class仿照表的元素创建,与表映射
配置文件 config.xml配置数据库的信息,和需要加载的配置文件
映射(map)文件 xxxMapper.xml与sql语句相映射
测试类 xxx.class运行sql语句

整个工程的文件结构在这里插入图片描述

在src中创建一个包,
然后在包里面创建与表映射的类City.class,先看一下city中有哪些列。
在这里插入图片描述
然后根据列来创建映射类,类中包含构造函数,元素的set和get方法,tostring方法。

import java.util.Arrays;

public class City {
  private int[] ID;
  private String name;
  private String CountryCode;
  private String District;
  private int[] Population;
  
  public City() {
	}
  
public City(int[] iD, String name, String countryCode, String district, int[] population) {
	ID = iD;
	this.name = name;
	CountryCode = countryCode;
	District = district;
	Population = population;
}
public int[] getID() {
	return ID;
}
public void setID(int[] iD) {
	ID = iD;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public String getCountryCode() {
	return CountryCode;
}
public void setCountryCode(String countryCode) {
	CountryCode = countryCode;
}
public String getDistrict() {
	return District;
}
public void setDistrict(String district) {
	District = district;
}
public int[] getPopulation() {
	return Population;
}
public void setPopulation(int[] population) {
	Population = population;
}

@Override
public String toString() {
	return "City [ID=" + Arrays.toString(ID) + ", name=" + name + ", CountryCode=" + CountryCode + ", District="
			+ District + ", Population=" + Arrays.toString(Population) + "]";
}
}

再创建一个映射文件CityMapper.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="mybatis.City"><!-- 命名空间改成自己的映射类 -->


	<select id="queryCityByName" resultType="mybatis.City" parameterType="String"> <!-- resultType必须用全类名 -->
	
	select * from city where name= #{name}  
	
	</select>
	
	
</mapper>

在包外面创建配置文件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.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://服务器地址:端口号/数据库名称" />
				<!-- mysql版本为8.0之后的应该在url后面加上?serverTimezone=GMT%2B8 -->
				<property name="username" value="${username}" />
				<property name="password" value="${password}" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="mybatis/CityMapper.xml" /><!-- 改成自己的映射文件 -->
	</mappers>
</configuration>

在包里创建Test类

package mybatis;

import java.io.IOException;
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 Test {

	public static void main(String[] args)throws IOException {
		//加载配置文件
		Reader reader =Resources.getResourceAsReader("config.xml");
		SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
		//相当于JDBC中的connection
		SqlSession session =sqlSessionFactory.openSession();
		String statment ="mybatis.City.queryCityByName";//映射文件中namespace.id
		City city=session.selectOne(statment,"Kabul");
		System.out.println(city);
		session.close();
	}

}

运行之后输出结果在这里插入图片描述
ID和Pupulation为空是因为数据类型我写错了,直接写int就行了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值