一 目的:
用尽可能少的环境依赖,对mybatis有一个体验。这一项是我的学习习惯,要最少的知识依赖体验一个知识点,这样才能对所所学内容有更本子的认识,尽可能的不依赖任何开发工具。
二 环境准备
1.基本环境
1.1 jdk(这个不用细说了)
1.2 mysql(这个不用细说了)
2.需要的jar包(这两个包的配置放到后面)
2.1 mysql-connector-java-8.0.19.jar(不要求必须这个版本)
2.2 mybatis-3.5.2.jar(不要求必须这个版本)
三 文件说明
1 c.java
2 mybatis.cfg.xml
3 Tb1Mapper.xml
4.Tb1Mapper.java
四 数据层准备
创建一个数据db1:create database db1
创建一个表tb1: create table tb1(id int,v1 int);
写入数据:insert into tb1(id,v1) values(1,11);
五 代码
1. c.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
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 c{
private static SqlSessionFactory sqlSessionFactory;
public static void main(String[] args) {
System.out.println("Hello World");
String resource = "mybatis.cfg.xml";
//得到配置文件流
InputStream inputStream = null;
try{
inputStream = Resources.getResourceAsStream(resource);
}catch(IOException ie){
ie.printStackTrace();
}
// 创建会话工厂,传入 MyBatis 的配置文件信息
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
selectCount();
}
private static void selectCount() {
SqlSession session = sqlSessionFactory.openSession();
Tb1Mapper mapper = session.getMapper(Tb1Mapper.class);
try {
int count = mapper.selectCount();
session.commit();
System.out.println("count:"+count);
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}
session.close();
}
}
2.mybatis.cfg.xml
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<!-- 指定一个包名起别名,将包内的 Java 类的类名作为类的类别名 -->
<package name="com.zoey.mybatis.model" />
</typeAliases>
<!-- 配置mybatis运行环境 -->
<environments default="development">
<environment id="development">
<!-- type="JDBC" 代表直接使用 JDBC 的提交和回滚设置 -->
<transactionManager type="JDBC" />
<!-- POOLED 表示支持JDBC数据源连接池 -->
<!-- 数据库连接池,由 Mybatis 管理,数据库名是 mybatis,MySQL 用户名 root,密码为空 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/db1?serverTimezone=UTC" />
<property name="username" value="root" />
<property name="password" value="123" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="Tb1Mapper.xml"/>
</mappers>
</configuration>
3 Tb1Mapper.xml
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="Tb1Mapper">
<select id="selectCount" resultType="int">
select count(id) from tb1
</select>
</mapper>
3 Tb1Mapper.java
public interface Tb1Mapper {
public int selectCount() throws Exception;
}
运行效果
六 附录
1.jar包的引入,就是在CLASSPATH环境变量中追加如下两个包的具体路径
D:\xjc\project\mabatisTest\t1\lib\mysql-connector-java-8.0.19.jar;
D:\xjc\project\mabatisTest\t1\lib\mybatis-3.5.2.jar
后记,这个配置不是必须的,如果不这样的话,就需要在编译和运行的命令中主动加人这两个包。
2 时间问题解决
2.1 问题现象
java.sql.SQLException: The server time zone value '?й???????' is unr
ecognized or represents more than one time zone. You must configure either the s
erver or JDBC driver (via the 'serverTimezone' configuration property) to use a
more specifc time zone value if you want to utilize time zone support.
2.2 解决办法
2.2.1 问题原因:
程序与数据库时间不同步
2.2.2 解决办法
mybatis.cfg.xml文件做如下修改
变更前
<property name="url" value="jdbc:mysql://localhost:3306/db1" />
变更后
<property name="url" value="jdbc:mysql://localhost:3306/db1?serverTimezone=UTC" />
3 记事本显示行号的问题
3.1 取消自动换行
3.2 显示状态栏
3.3 如何查看行数
七 关联引用
https://www.cnblogs.com/zoeyqq/p/6934096.html
https://mybatis.org/mybatis-3/zh/dynamic-sql.html