环境配置
1.新建工程,使用maven(不用加其他)
2.在pom文件添加
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
main包:
在java包加com.xxx.domain包,放User类(与数据库的表对应)
在java包加com.xxx.dao包,放IuserDao接口
在resources加一个xml文件(空),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="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
注释后版本:(注意修改参数)
<?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">
<!-- mybatis的主配置文件 -->
<configuration>
<!-- 配置环境 -->
<environments default="mysql">
<!-- 配置mysql的环境-->
<environment id="mysql">
<!-- 配置事务的类型-->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源(连接池) -->
<dataSource type="POOLED">
<!-- 配置连接数据库的4个基本信息 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/数据库名称"/>
<property name="username" value="root"/>
<property name="password" value="密码"/>
</dataSource>
</environment>
</environments>
<!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
<mappers>
<mapper resource="com/xxx/dao/IUserDao.xml"/>
</mappers>
</configuration>
在resources下添加刚才mapper描述的一层层文件,在xml文件添加如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxx.dao.IUserDao">
<!--配置查询所有-->
<select id="findAll" resultType="com.xxx.domain.User">
select * from user
</select>
</mapper>
环境搭建的注意事项:
- 第一个:
创建IUserDao.xml 和 IUserDao.java时名称是为了和我们之前的知识保持一致。 在Mybatis中它把持久层的操作接口名称和映射文件也叫做:Mapper 所以:IUserDao 和 IUserMapper是一样的
- 第二个
第二个:在idea中创建目录的时候,它和包是不一样的
包在创建时:com.itheima.dao它是三级结构
目录在创建时:com.itheima.dao是一级目录
- 第三个
mybatis的映射配置文件位置必须和dao接口的包结构相同
- 第四个
映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
- 第五个
映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名
当我们遵从了第三,四,五点之后,我们在开发中就无须再写dao的实现类。
入门案例
在resources下添加log4j.properties文件
test包:
添加com.xxx.test包,添加MybatisTest.java文件,代码如下:
public class MybatisTest {
/**
* 入门案例
*/
public static void main(String[] args)throws Exception {
//1.读取配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
//3.使用工厂生产SqlSession对象
SqlSession session = factory.openSession();
//4.使用SqlSession创建Dao接口的代理对象
IUserDao userDao = session.getMapper(IUserDao.class);
//5.使用代理对象执行方法
List<User> users = userDao.findAll();
for(User user : users){
System.out.println(user);
}
//6.释放资源
session.close();
in.close();
}
}
出现这样的问题:
Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
解决办法:
将前面xml文件改一下(后面加上?useSSL=false):
<property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis?useSSL=false"/>
使用注解配置环境变量
1.新建工程,使用maven(不用加其他)
2.在pom文件添加 (同上面的配置)
3.将除 “在resources下添加刚才mapper描述的一层层文件(xml)” 外的其他东西原封不动copy进去,注意,是除了com/xxx/dao/IUserDao.xml以外的文件。
4.千万注意,pom.xml文件要刷新!!!(右上角有刷新按钮)
5.将main包下的IUserDao接口加上注解,代码如下:
public interface IUserDao {
//查询所有操作
@Select("select * from user")
List<User> findAll();
}
6.修改SqlMapConfig.xml文件,修改部分为:
<!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件
如果是用注解来配置的话,此处应该使用class属性指定被注解的dao全限定类名
-->
<mappers>
<mapper class="com.xxx.dao.IUserDao"/>
</mappers>
7.运行成功。
- 总结:
mybatis基于注解的入门案例:把IUserDao.xml移除,在dao接口的方法上使用@Select注解,并且指定SQL语句。同时需要在SqlMapConfig.xml中的mapper配置时,使用class属性指定dao接口的全限定类名。
- 明确
我们在实际开发中,都是越简便越好,所以都是采用不写dao实现类的方式。不管使用XML还是注解配置。但是Mybatis它是支持写dao实现类的。