1.创建数据库建表
CREATE TABLE `user`(
`id` int(20) not null PRIMARY KEY,
`name` VARCHAR(30) DEFAULT NULL,
`pwd` VARCHAR(30) DEFAULT NULL
)ENGINE=INNODB DEFAULT CHARSET=utf8;
insert into `user`(`id`,`name`,`pwd`) values
(1,'小红','123'),
(2,'小明','12345'),
(3,'小陈','12366')
对于这里的mysql里面的一些问题,可以参考下面的文章:
飘号:https://www.csdn.net/tags/Ntzakg4sNjg4NDUtYmxvZwO0O0OO0O0O.html
mysql中 的 ENGINE = innodb; 是什么意思?_qzy_CC的博客-CSDN博客_engine=innodb
2.导入依赖
<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.9</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> </dependencies>
3.编写mybatis的核心配置文件
<?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核心配置文件-->
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&
characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai"/>
<property name="username" value="root"/>
<property name="password" value="111111"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/wjc/dao/UserMapper.xml"/>
</mappers>
</configuration>
4.编写mybatis工具类
每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。
所以我们直接写个Mybatis工具类来实例化SqlSession,基本是死代码。可以看官方文档。
//sqlSessionFactory-->sqlSession
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
//从 XML 中构建 SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
// SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
5.编写代码
UserDao.class
import java.util.List;
public interface UserDao {
List<User> getUser();
}
之前我们会再写一个实现类来编写sql语句,但是现在是写mapper
mapper的i方法id要和方法名一致!!resultType的值是全限类名!不能只写User
<?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"> <!--namespace=绑定一个对应的Dao/Mapper接口--> <mapper namespace="com.wjc.dao.UserDao"> <!-- 查询语句,绑定查询方法--> <select id="getUser" resultType="com.wjc.pojo.User"> select * from mybatis.user </select> </mapper>
也就是现在的UserMapper.xml取代了以前的UserDaoImpl实现类!
如果在配置文件里写sql
语句没有提示,去idea的settings设置SQL Dialects为MYSQL
既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。
测试:我们直接调用之前编写的工具类的静态方法来获取实例化SqlSession对象
public class UserDaoTest {
@Test
public void userdaotest(){
//1.获取SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//2.方式一:getMapper
UserDao userDao = sqlSession.getMapper(UserDao.class);
List<User> user = userDao.getUser();
for (User user1 : user) {
System.out.println(user1);
}
//3.关闭sqlSession
sqlSession.close();
}
}
6.分析错误:
错误1
没有在mybatis-config里面配置mapper映射。每写一个mapper.xml文件就要写一个mapper映射
<mappers> <mapper resource="com/wjc/dao/UserMapper.xml"/> </mappers>
错误2:找不到mapper配置文件
在pom.xml里添加如下代码。因为maven默认只扫描resources下的配置文件,加了这个就能扫描到其他地方的xml了
<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> </resource> </resources> </build>
总结
步骤1:先写工具类MybatisUtils,几乎是死代码,在里面编写静态方法,实例化SqlSession
步骤2:工具类需要一个配置文件,所以去resouces里面写个mybatis配置文件,在配置文件里面准备(数据库)环境
步骤3:然后编写实体类
步骤4:写完实体类写接口
步骤5:写完接口写mapper.xml
步骤6:最后再写test测试