一、项目初始
maven依赖包及资源过滤
以下配置必须有,全部在pom中,resourses标签在build下,用来将java目录下的xml映射文件放入class文件中
<!--mysql依赖包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26 </version>
</dependency>
<!--mybatis依赖包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<!--资源过滤-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
二、入门案例
- 全局配置文件config.xml(resourse目录下)
- mapper配置文件(java目录下)
- 实体类
- 测试类
mybatis全局配置文件
在resourses目录下建立全局配置文件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>
<!--资源文件,用来拿到连接数据库的一些配置,可以不用-->
<properties resource="mysql.properties"/>
<!--可以配置多个环境-->
<environments default="study">
<environment id="study">
<!--事务管理,JDBC方式-->
<transactionManager type="JDBC"/>
<!--数据库连接池-->
<dataSource type="POOLED">
<!--取到了配置文件里面的数据-->
<property name="driver" value="${driver}"/>
<property name="url" value="jdbc:mysql://localhost:3306/study?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="342425"/>
</dataSource>
</environment>
</environments>
<!--映射文件-->
<mappers>
<mapper resource="mapper/map.xml"/>
</mappers>
</configuration>
数据库配置文件,可以不用,如果用了,可以在全局配置中拿到数据<property name="driver" value="${driver}"/>
同样放在resourse目录下
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/study?serverTimezone=UTC
user=root
password=342425
mapper映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<?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">
<!--命名空间,文件的id-->
<mapper namespace="mapper.map">
<!--sql语句,需要有id识别-->
<select id="actorname" parameterType="int" resultType="dao.actor">
select * from actor where actor_id=${value}
</select>
</mapper>
实体类
需要创建完全对应数据库的变量名
package dao;
import java.util.Date;
public class actor {
private Integer actor_id;
private String first_name;
private String last_name;
private Date last_update;
@Override
public String toString() {
return "actor{" +
"actor_id=" + actor_id +
", first_name='" + first_name + '\'' +
", last_name='" + last_name + '\'' +
", last_update=" + last_update +
'}';
}
public Integer getActor_id() {
return actor_id;
}
public void setActor_id(Integer actor_id) {
this.actor_id = actor_id;
}
public String getFirst_name() {
return first_name;
}
public void setFirst_name(String first_name) {
this.first_name = first_name;
}
public String getLast_name() {
return last_name;
}
public void setLast_name(String last_name) {
this.last_name = last_name;
}
public Date getLast_update() {
return last_update;
}
public void setLast_update(Date last_update) {
this.last_update = last_update;
}
}
测试类
package Jdbc.Mybits;
import Jdbc.Pojo.MybitsDemo1;
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;
public class Execute {
public static void main(String[] args) throws IOException {
//mybatis的配置文件
String resource = "config.xml";
//使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
InputStream is = Execute.class.getClassLoader().getResourceAsStream(resource);
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
//使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
//Reader reader = Resources.getResourceAsReader(resource);
//构建sqlSession的工厂
//SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//创建能执行映射文件中sql的sqlSession
SqlSession session = sessionFactory.openSession();
//sql语句映射,需要映射文件名加sql语句id值
String statement="mapper.map.actorname";
String statements="mapper.map.updateone";
session.update(statements,18);
actor names = session.selectOne(statement, 18);
//JDBC事务需要手动提交
session.commit();
System.out.println(names);
}
}
三、报错处理
常见的报错信息如下
- mysql依赖包版本冲突,需要重新导入合适jar包
- 没有将mapper文件加入到项目class目录中,需要早pom中设置过滤,本文开头已提及
- 实体类与数据表字段没有一一对应
- 映射文件中sql语句中输入类型,返回类型没有写完全名,需要把包名及类名完全写上
- $和#符号使用错误,在下一篇讲解
- 文件名、sql语句等错误。。。