IDEA实现Mybatis的Maven项目的创建
一:新建工程
依次点击File->New Project->Maven,这里为了节约时间我们直接点击下方的Next。
Name代表的是你要创建的项目的名字,我的项目名称是ssmdemo1,Location指的是项目存放的路径,可以根据需要自行修改。
二:在项目中添加Tomcat
鼠标右键单击你的项目,选中Add Framework接下来你会看到这个页面
选中Web Application然后点击ok,这样我们就成功地把Tomcat加入进去了。
然后我们就需要对Tomcat进行进一步的配置。
三:配置Tomcat
点击小锤子旁边框框里的Add Configuration进行配置的一个添加
选择Tomcat Server下的Local
这个时候Tomcat还是不能用的,我们需要点击Deployment来部署它。
点击下方的加号再点击Artifact,这样我们就成功部署了Tomcat,最后依次点击Apply,Ok即可。
四:导入Maven的依赖
为了避免出现版本不兼容的问题,建议最好在网上查找。
我们需要点击porm.xml文件,在他自动生成的 标签之后添加如下依赖。
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<!-- mysql驱动包
这个驱动包要根据自己MySQL版本来配置不然就会出bug-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<!-- junit测试包 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--@Data-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.18</version>
<scope>provided</scope>
</dependency>
</dependencies>
然后点击这个m进行依赖的一个更新。
如果没有异常我们可以继续进行下一步。
五:编写pojo类
在src->main的蓝色java下创建pojo包,在该包下创建User类
六:配置mybatis.xml和其映射文件
在resources下新建mybatis.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>
<!-- 环境配置 -->
<environments default="mysql">
<!--配置mysql的环境-->
<environment id="mysql">
<!--配置事务的类型-->
<transactionManager type="JDBC"></transactionManager>
<!--配置连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/cyq?serverTimezone=Asia/Shanghai&useSSL=false" />
<property name="username" value="root" />
<property name="password" value="tiancaik" />
</dataSource>
</environment>
</environments>
<!-- mapping文件路径配置 -->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
cyq为数据库名称,root为数据库用户名,tiancaik为数据库密码,接下来我们来配置映射文件UserMapper.xml.
在resources下新建Mapper文件夹,在Mapper下新建Usermapper.xml文件
编写测试要使用的sql语句
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cuiyiqun">
<select id="selectUser" resultType="pojo.User">
select * from t_user
</select>
</mapper>
七:完善实体类并编写测试类进行测试
在实体类User中粘贴如下代码
import lombok.Data;
@Data
public class User {
private String username;
private String password;
}
@Data是一个注解可以默认的为username和password添加Get,Set方法,但是如果想要使用它,必须引用如下依赖
在以上依赖中已经引入,特此说明。
接下来我们在Test的绿Java下新建Test类进行测试,粘贴如下代码
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 org.junit.FixMethodOrder;
import org.junit.runners.MethodSorters;
import pojo.User;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.util.List;
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class Test {
@org.junit.Test
public void _02_selectUser() throws IOException {
//1.读取配置文件
InputStream in = Resources.getResourceAsStream("mybatis.xml");
//2.创建SqlSessionFactory工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
//3.使用工厂生产SqlSession对象
SqlSession session = sqlSessionFactory.openSession();
//4.执行Sql语句
List<User> user = session.selectList("cuiyiqun.selectUser");
//5. 打印结果
user.forEach(System.out::println);
//6.释放资源
session.close();
in.close();
}
@org.junit.Test
public void _01_testFindUsername() throws IOException {
//定义读取文件名
String resources = "mybatis.xml";
//创建流
Reader reader=null;
try {
//读取mybatis-config.xml文件到reader对象中
reader= Resources.getResourceAsReader(resources);
} catch (IOException e) {
e.printStackTrace();
}
//初始化mybatis,创建SqlSessionFactory类的实例
SqlSessionFactory sqlMapper=new SqlSessionFactoryBuilder().build(reader);
//创建session实例
SqlSession session=sqlMapper.openSession();
//传入参数查询,返回结果
List<User> user=session.selectList("cuiyiqun.selectUser");
//输出结果
for (User user1 : user) { System.out.println(user1.getUsername()); }
System.out.println("------------------------------------");
//关闭session
session.close();
}
}
为了避免不必要的麻烦,我们需要告诉程序要@谁因此在这里使用 @org.junit.Test,此外为了解决这junit来回窜位置的问题,我们可以添加
@FixMethodOrder(MethodSorters.NAME_ASCENDING)这个注解,也就是按名称排序,这样问题就完美解决了。
接下来我们打开navicate,运行代码进行测试。
完活。