Mybatis学习——创建一个Mybatis工程,连接mysql
程序员文章站
2022-06-02 15:07:15
...
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();
}
}
运行之后输出结果
一些复杂的数据类型返回为null,这个问题之后解决。
上一篇: PS4 4.0版本系统明天(9.14)正式推送:支持HDR
下一篇: struts2入门简介一