参考文章
https://blog.csdn.net/FJJ543/article/details/81064891?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
https://blog.csdn.net/FJJ543/article/details/81064891?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
注释:
1.第一个的配置过程+第二个的配置文件=解决问题
(第一个的配置文件略有问题,且两个的结构都较为复杂)
2.除了batis的配置,其他的都可以略过,第二个的idea连接数据库需要下载文件(需要外网),此步可以省略
参考这个文章出现的一些问题记录
我的配置 (可能出现的问题写在最后)
1.先看我的目录,主要有四个配置文件,配置文件放在在哪里都一样,只要路径配置正确
我的是官方jar包集合,不需要Junit(测试框架,用不到)
下载地址:https://download.csdn.net/download/qq_42733641/12276170
2.我的配置文件和博主略有不同,精简了很多,更改了一些配置,一直出错的可以试一试我的
jdbc.properties 这个单独配置,也可以直接写道config.xml中,单独配置需要引用,注意这里url后面是跟了参数的
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&useSSL=false
jdbc.username=root
jdbc.password=alpha
config.xml mybratis的主要配置文件
<?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="jdbc.properties"></properties>
<!-- 配置mybatis运行环境 -->
<environments default="cybatis">
<environment id="cybatis">
<!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
<transactionManager type="JDBC" />
<!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
<!-- POOLED 表示支持JDBC数据源连接池 -->
<!-- UNPOOLED 表示不支持数据源连接池 -->
<!-- JNDI 表示支持外部数据源连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<!--mybatis.cfg.xml里注册UserMapper.xml文件-->
<mappers>
<!--<!– 告知映射文件方式1,一个一个的配置,务必使用斜杠而不是点,会报错-->
<mapper resource="mapper.xml"/>
<!-- 告知映射文件方式2,自动扫描包内的Mapper接口与配置文件 -->
<!--<package name="com/cy/mybatis/mapper"/>-->
</mappers>
</configuration>
mapper.xml namespace的命名就是测试代码中要填写的路径,可以随便写
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace随便写,不要和包名重复-->
<mapper namespace="a.b">
<select id="selectAll" resultType="com.alpha.mybatis.Country">
SELECT * FROM country
</select>
</mapper>
log4j.properties 日志配置,必须,bratis中调用了日志,所以必须配置
### 设置Logger输出级别和输出目的地 ###
log4j.rootLogger=debug,stdout,logfile
### 把日志信息输出到控制台 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
### 把日志信息输出到文件:jbit.log ###
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=jbit.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n
###显示SQL语句部分
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
test 测试代码
import com.alpha.mybatis.Country;
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;
/**
* @Auther Alpha
* @Data 2020-03-27 16:43
* @Dscription:
*/
public class test {
public static void main(String[] args) throws IOException {
InputStream is = Resources.getResourceAsStream("config.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = factory.openSession();
List<Country> list = session.selectList("a.b.selectAll");
for (Country country : list){
System.out.println(country.toString());
}
session.close();
}
}
容易出现的问题:
1.没有配置日志
2.路径没有写对(80%的问题),config的路径映射是斜杠,包名+点不生效