步骤:
1.导包jar
2.创建mybatis配置类,配置类中的第一步就是连接配置文件xml,所以第三步写配置文件
3.数据库的配置文件,连接数据库,会在第二步的配置类中加载他
4.创建一个对应数据库的java类,类中的属性对应着数据库中的字段
5.操作数据库的接口和实现类(这里的实现类用xml方式实现了,结果都是要在实现类中写sql语句,操作数据库的)
6.完成
mybatis官网有入门的简介
https://mybatis.org/mybatis-3/zh/getting-started.html
1.maven导入jar包,mybatis,mysql,junilt–配置完以后都不会变
<!--mybatis包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<!--mysql包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.8</version>
</dependency>
<!--junit包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
2.创建mybatis配置类,配置类中的第一步就是连接配置文件xml,所以第三步写配置文件
package com.rod;
import com.dao.UserI;
import com.mysqlclass.Mybatis;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
/**
* 功能描述:
*/
public class Mybatisconfig {
public void getSqlSession() {
try {
//获取连接数据库配置文件的位置信息
String resource = "mybatis-config.xml";
//读取配置文件中的数据库中的数据,将类路径上的资源作为流对象返回
InputStream inputStream = Resources.getResourceAsStream(resource);
//这里官网说最好不要多次创建sqslsession,使用单例模式,我用了方法创建,第一次用有点错误,应该使用静态的方式创建的
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//通过工厂创建session,session用来获取读取数据库类的实例,getmapper
try (SqlSession session = sqlSessionFactory.openSession()) {
UserI mapper = session.getMapper(UserI.class);
//获取实例以后调用方法,输出数据库数据
List<Mybatis> mybatis = mapper.mybatisList();
for (Object obj : mybatis) {
System.out.println(obj);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
3.数据库的配置文件,连接数据库,会在第二步的配置类中加载他
<?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>
<!--development:表示可以连接多个数据库,这里的名字代表一个数据库-->
<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://localhost:3306/"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--
注册useri.xml;所有用来从数据库获取数据的
实现接口的xml都需要在连接数据库这里注册,这些xml相当于实现类
都是用来操作数据库中的数据的,sql语句都写在这些xml里面
-->
<mapper resource="com/dao/UserI.xml"/>
</mappers>
</configuration>
4.创建一个对应数据库的java类,类中的属性对应着数据库中的字段
package com.mysqlclass;
/**
* 功能描述:
*/
public class Mybatis {
private int id;
private String idname;
private int psw;
public Mybatis(int id, String idname, int psw) {
this.id = id;
this.idname = idname;
this.psw = psw;
}
public Mybatis() {
}
public void setId(int id) {
this.id = id;
}
public void setIdname(String idname) {
this.idname = idname;
}
public void setPsw(int psw) {
this.psw = psw;
}
public int getId() {
return id;
}
public String getIdname() {
return idname;
}
public int getPsw() {
return psw;
}
@Override
public String toString() {
return "Mybatis{" +
"id=" + id +
", idname='" + idname + '\'' +
", psw=" + psw +
'}';
}
}
5.操作数据库的接口和实现类(这里的实现类用xml方式实现了,结果都是要在实现类中写sql语句,操作数据库的)
package com.dao;
import com.mysqlclass.Mybatis;
import java.util.List;
/**
* 功能描述: mapper接口
*/
public interface UserI {
List<Mybatis> mybatisList();
}
<?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">
<!--
namespace是需要绑定到对应的接口
本来应该是实现接口的类中写sql语句,获取数据库中的数据的
现在使用xml文件了.所以要给个名字,相当于implements 接口
只不过变成了namespace="接口全路径"
-->
<mapper namespace="com.dao.UserI">
<!--
这里是id就是调用接口的方法,实现类实现接口还行要重写方法的,这里用id表示方法
resulttype:就是返回类型,方法中select了数据库的所有数据,要再在控制台输出,
就需要有一个对应着数据库的类,去接受这些查询到的数据,所以result就是要接受数据库数据的类的全路径
-->
<select id="mybatisList" resultType="com.mysqlclass.Mybatis">
select * from mybatis.mybatis_1
</select>
</mapper>
6.test,测试一下,结果是什么
package com;
import com.rod.Mybatisconfig;
import org.junit.Test;
/**
* 功能描述:
*/
public class MybatisTest {
@Test
public void test(){
//直接new一个创建mybatis工厂的类,因为里面已经操作完了所有数据,直接调用方法就可以
new Mybatisconfig().getSqlSession();
}
}
结果:
Mybatis{id=1, idname='a', psw=1}
Mybatis{id=2, idname='b', psw=2}
Mybatis{id=3, idname='c', psw=3}