配置文件:
<?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> <!-- 可以配置多个运行环境,但是每个 SqlSessionFactory 实例只能选择一个运行环境 一、development:开发模式 二、work:工作模式--> <environments default="development"> <!--id属性必须和上面的default一样 --> <environment id="development"> <!--事务管理器 一、JDBC:这个配置直接简单使用了 JDBC 的提交和回滚设置。它依赖于从数据源得到的连接来管理事务范围 二、MANAGED:这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让容器来管理事务的整个生命周期 比如 spring 或 JEE 应用服务器的上下文,默认情况下,它会关闭连接。然而一些容器并不希望这样, 因此如果你需要从连接中停止它,就可以将 closeConnection 属性设置为 false,比如: <transactionManager type="MANAGED"> <property name="closeConnection" value="false"/> </transactionManager> --> <transactionManager type="JDBC"/> <!--dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象源 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatisDemo?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT"/> <property name="username" value="root"/> <property name="password" value="941125"/> </dataSource> </environment> </environments> <mappers> <!-- 注册personMapper.xml文件, personMapper.xml位于com.ys.bean这个包下,所以resource写成com/ys/bean/personMapper.xml--> <mapper resource="zju_001\maven_test_1\personMapper.xml"/> </mappers> </configuration>
其中,jdbc的驱动应该为com.mysql.cj.jdbc.Driver,而不是原来的com.mysql.jdbc.Driver。
url中 要添加useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT,以&分开各个属性。
以下是一个mybatis测试类示例
package zju_001.maven_test_1; import java.io.IOException; import java.io.InputStream; import java.util.List; import zju_001.maven_test_1.Person; 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_mybatis_1 { SqlSession session; public void beforeLoadXML() throws IOException{ //加载 mybatis 配置文件 InputStream inputStream = Resources.getResourceAsStream("zju_001\\maven_test_1\\mybatis-configuration.xml"); //InputStream inputStream = test_mybatis_1.class.getClassLoader().getResourceAsStream("\\mybatis-configuration.xml"); //构建sqlSession的工厂 b SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //根据 sqlSessionFactory 产生 session session = sqlSessionFactory.openSession(); } public void testSelectById(){ //这个字符串有 personMapper.xml 文件中 两个部分构成 //<mapper namespace="com.ys.bean.personMapper"> 的 namespace 的值 //<select id="selectPersonById" > id 值 String statement = "zju_001.maven_test_1.personMapper"+".selectPersonById"; // Person p = new Person(); session.selectOne(statement, 1); Person p = session.selectOne(statement, 1); System.out.println(p); session.close(); } public static void main(String[] args) throws IOException { // TODO Auto-generated method stub test_mybatis_1 t1=new test_mybatis_1(); t1.beforeLoadXML(); t1.testSelectById(); } }