创建一个基本的MyBatis
1.先找关于MyBatis的jar包
mybatis的jar包下载地址
下载mysql-connector
- 为什么下载mysql-connector
因为MyBatis是基于底层数据库的,所以需要下载mysql-connector
2.按照数据库中表建立相对应的User对象
3.设置mapper
mapper.xml的设置其实从本质上来说就是对sql语句的封装,直接上截图
对于namespace可设置为你设置mapper的包路径
id是唯一的
4.设置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>
<!-- resource指定文件,然后文件中有key==>value,使用${}获取文件中的v -->
<properties resource="db.properties"></properties>
<!-- default指定工程在哪个环境下运行 如果default="test",那么该工程就会在test环境下运行-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<!-- 配置数据库 -->
<property name="driver" value="${driver}" />
<property name="url" value="${url}"/>
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
<environment id="test">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<!-- 配置数据库 -->
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC"/>
<property name="username" value="root" />
<property name="password" value="123" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 加载映射文件 -->
<mapper resource="edu/ahau/mapper/userMapper.xml" />
</mappers>
</configuration>
在xml文件里面我设置了两个environment ,这是关于文件中的,因为开发环境可能不止一个,还有测试环境等等,会有很多设置环境方法,但是个人还是建议使用default直接进行设定。(还是觉得别的方法太麻烦了)
在设置环境的时候尤其要注意对url的设置,因为这个东西整了我好久,很多人会将JDBC里面的url直接copy过来,导致程序运行的时候会产生异常,
1.实体需要用";"来结尾
2.时间的冲突,在日志里面会在" "会有乱码产生,需要你去设定一个地区时间
具体的解决方法就是直接将url设定为:jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
还有一种解决方法:设置动态文本
创建一个新的file,里面包括的内容如下:
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
username=root
password=123
(具体的信息在我设置config代码的注释里面有相应的解释)
5.设置一个测试类
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 MyBatis_Test {
public static void main(String[] args) throws IOException {
Reader reader = Resources.getResourceAsReader("config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
//SqlSessionFactory - connection 相当于对JDBC里面的getconnection
SqlSession session = sqlSessionFactory.openSession();
String statement = "edu.ahau.entiy.UserMapper.queryUserByID";
User user = session.selectOne(statement,1);
System.out.println(user);
session.close();
}
}
关于statement里面就涉及到我们前面设值的namespace和id,其唯一性就体现出来了,在我们执行sql语句的时候会实现不同的功能。