转载的--java用IDEA+maven配置Mybatis全流程和碰见的坑--觉得原文写得比较好

觉得写得比较好,转载的。
原文链接: https://blog.csdn.net/Qiuyl7758/article/details/80493093

用2018年最新版IDEA和mybatis配置mybatis,在网上找了大半天没有找到合适我这个新手的资料,总是跑不起来,各种报错,现在详细记录下一个超简单的mybatis项目,这是从创建文件到找到第一条的数据的过程,贴上代码。

这是github地址,可以直观地看目录结构:https://github.com/qylcx7758/IDEA-MAVEN-Mybatis/

一、在网上很多大多的文件结构是这种,这是用maven创建的webapp项目,实际上单纯的跑第一个项目根本不需要webapp,而且其中的POJO文件和resource文件夹都不是自动生成,而是自己创建的。

(坑1:这也令我困惑了很久,怎么找不到网上说的这种文件结构,下面是具体的文件介绍)

二、创建项目模板:maven+quickstart

2.1 

坑2:java版本不要用jdk9以上的版本,一开始我用的jdk10就报错,至于如何在IEDA里面jdk切换成其他版本,百度就行,网上有解决办法;quickstart和webapp都可以,我这里用的是quickstart模板。

坑3:创建项目名不要有破折号,不然会导致之后文件内创建不了Class类)。


2.2 maven的配置,都一样,网上很多maven的教程。


三、初始配置

3.1 在pom.xml文件内添加Mysql驱动和Mybatis依赖,然后点击右下角的import。



   
   
  1. <dependency>
  2. <groupId>mysql </groupId>
  3. <artifactId>mysql-connector-java </artifactId>
  4. <version>6.0.6 </version>
  5. </dependency>
  6. <!-- ********************** Mybatis依赖 ********************** -->
  7. <dependency>
  8. <groupId>org.mybatis </groupId>
  9. <artifactId>mybatis </artifactId>
  10. <version>3.4.4 </version>
  11. </dependency>

3.2 此时的初始文件结构如下,csdnMybatis这是我的项目名,这个项目结构都是自动生成的。


3.3 创建resource文件夹,注意与java文件夹同级,并设置为Resources Root(意思大概是让外面的java文件能够访问到里面的资源)

附:关于resource配置信息一不小心踩中其中某个坑,就会报Exception in thread "main" org.apache.ibatis......的错误。

(坑4:这个resource文件夹是自己创建的,而且要自己设置权限为Resourcr Root,不然之后代码会访问不到xml配置文件,报错)


四、以上几乎是固定的,下面是配置文件信息,书写resource文件夹内文件信息

4.1 在resource文件夹里面创建两个xml文件,此时文件结构如下:


4.2 在Mybatis-config这个mybatis配置文件下,写下如下代码:


   
   
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <settings>
  7. <!--当返回行的所有列都是空时,MyBatis默认返回null-->
  8. <setting name="returnInstanceForEmptyRow" value="true"/>
  9. </settings>
  10. <environments default="development">
  11. <environment id="development">
  12. <!--使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域-->
  13. <transactionManager type="JDBC"/>
  14. <!--使用数据池,复用实例-->
  15. <dataSource type="POOLED">
  16. <!--<property name="driver" value="com.mysql.jdbc.Driver"/>-->
  17. <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
  18. <property name="url" value="jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8"/>
  19. <property name="username" value="root"/>
  20. <property name="password" value="admin"/>
  21. </dataSource>
  22. </environment>
  23. </environments>
  24. <mappers>
  25. <mapper resource="TableDAO.xml"> </mapper>
  26. </mappers>
  27. </configuration>


这里有四个需要注意的地方,

坑5:第一个标记好像是因为mysql版本太新了,需要将vaule="com.mysql.jdbc.Driver"改成"com.mysql.jdbc.Driver",不然虽然同样有结果,但会报红:

value="com.mysql.jdbc.Driver"  改成  value="com.mysql.jdbc.Driver",不然虽然同样会出来结果,但会报红:

第二个标记 test 代表了用户的的数据库,第三个标记分别是用户名和密码,

坑6:第四个标记对应了刚刚创建的TableDAO.xml文件。


4.3 在TableDAO.xml文件内写下如下代码:


   
   
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="csdnMybatis">
  6. <select id="getWebsiteById" resultType="csdnMybatis.Twebsites">
  7. SELECT * FROM websites WHERE id = #{id};
  8. </select>
  9. </mapper>


这只是一个简单的搜索语句,这里也有好多坑,网上写法太多了,但在这种环境下,我只实验出了我这种写法正确,有四个需要注意的地方,之后会用到,在我的例子里面直接这样子写:

坑7: namespace="csdnMybatis"对应之后需要运行的文件(TestMybatis--之后创建的)所在的文件夹;(如果文件更深,可能就需要多层结构,但本示例不需要)

坑8:  resultType=“csdnMybatis.Twebsites”对应之后创建的类名;

id="getWebsiteById"之后会用到,SQL语句中的websites对应所搜索的表名;



五、类文件和主体文件

5.1 在csdnMybatis下创建两个文件,位置对应4.3的写法,此时全部的文件结构如下:


5.2 在Twebsite文件内,写如下代码:

(不必要写完全表的字段名,写几个简单的就行)


   
   
  1. package csdnMybatis;
  2. public class Twebsites {
  3. private int id;
  4. private String name;
  5. public int getId(){ return id;}
  6. public void setId(int id){ this.id=id;}
  7. public String getName() {
  8. return name;
  9. }
  10. public void setName(String name) {
  11. this.name = name;
  12. }
  13. }

表的内容如下,随便一个含id和name两个字段的表都能用这段代码:


5.3 主体文件,也就是在运行的文件内写如下代码,即可:


   
   
  1. package csdnMybatis;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import org.apache.ibatis.io.Resources;
  5. import org.apache.ibatis.session.SqlSession;
  6. import org.apache.ibatis.session.SqlSessionFactory;
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  8. public class TestMybatis {
  9. public static void main( String[] args) throws IOException {
  10. String resource = "Mybatis-config.xml";
  11. InputStream inputStream = Resources.getResourceAsStream(resource);
  12. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  13. SqlSession session = sqlSessionFactory.openSession();
  14. Twebsites c= session.selectOne( "getWebsiteById", 2);
  15. System.out. println( c.getName());
  16. session.commit();
  17. session.close();
  18. }
  19. }

5.4 之后可能会报错


这就需要配置下运行路径



运行结果,无报错


六、新学JAVA,写了2小时多点,这只是一个IDEA+MAVEN运行Mybatis的简单项目,如果运行不了我上述的简单项目或者有不对的地方,欢迎评论。关于排版,如果有需要我会重新排下。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值