编写第一个Mybatis程序
1.准备工作
1.1 新建一个Maven Web项目
1.2 在pom.xml文件中,导入依赖
<dependencies>
<!--导入单元测试jar-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--导入mybatis框架-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!--导入MysqL数据库驱动-->
<dependency>
<groupId>MysqL</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
</dependencies>
注意:在进行导入依赖时,建议也将资源文件导出到打包项目中的依赖进行导入
<!--保证在java和resources下的资源文件可以导出-->
<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>
1.3 创建数据库,进行数据库连接
1.4 完善项目结构
2.编写实体类
3.编写mysbatis-config.xml文件,配置数据库配置
在Mybatis官网获得xml文件的格式模板,在resources下编写一个配置文件。
模板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">
<!--配置文件-->
<configuration>
<!--环境,可以配置多个 default="development":表示默认使用的环境-->
<environments default="development">
<!--id="development":表示当前环境的id-->
<environment id="development">
<!--transactionManager:表示事务管理 type="JDBC":表示类型为jdbc-->
<transactionManager type="JDBC"/>
<!--dataSource:表示数据源 type="POOLED":表示数据源类型-->
<dataSource type="POOLED">
<!--property name="driver":数据库驱动名 value="${driver}":值-->
<property name="driver" value="com.MysqL.jdbc.Driver"/>
<!--property name="url":数据库url value="${url}"-->
<!--时区与编码问题需要注意-->
<property name="url" value="jdbc:MysqL://localhost:3306/mybatis?useSSL=true&charset=utf-8&serverTimezone=UTC"/>
<!--property name="username":用户名 value="${username}"-->
<property name="username" value="root"/>
<!--property name="password":密码 value="${password}-->
<property name="password" value="liyu297628"/>
</dataSource>
</environment>
</environments>
<!--每个mapper.xml文件都需要在mybatis的核心配置文件中进行绑定-->
<mappers>
<!--这里的配置需要在编写Dao的xml文件后配置-->
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
4.编写MybatisUtil工具类,获得sqlSession类
我们需要获得sqlSession类(这里的sqlSession类可以将其比作Connection类,这个sqlSession封装了很多执行sql语句的方法),所以我们可以编写一个根据类,来获得sqlSession。
MybatisUtil工具类
package com.xiaoli.util;
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;
public class MybatisUtil {
private static sqlSessionFactory sessionFactory;
static {
//xml文件路径
String xmlPath = "mybatis-config.xml";
//获取xml文件的流
InputStream resourceAsstream = null;
try {
resourceAsstream = Resources.getResourceAsstream(xmlPath);
} catch (IOException e) {
e.printstacktrace();
}
//获取sqlSessionFactory工厂,用于获取sqlSession
sessionFactory = new sqlSessionFactoryBuilder().build(resourceAsstream);
}
public static sqlSession getsqlSession(){
return sessionFactory.openSession();
}
}
测试:
如果出现错误,我们需要先把mybatis-config.xml,中的mapper标签注释掉:
5.编写执行sql语句的xml的dao文件
我们可以发现,上面的三个文件中,UserDao与UsereDaoImpl是我们所熟悉的,现在我们使用UserMapper.xml文件来代替实现类。
UserDao代码:
package com.xiaoli.dao;
import com.xiaoli.pojo.User;
import java.util.List;
public interface UserDao {
public List<User> getUserList();
}
UserMapper.xml文件的代码我们可以通过Mybatis官网获得模板,
模板代码:
<?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="org.mybatis.example.BlogMapper">
<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
<?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:即我们之前的dao namespace="org.mybatis.example.BlogMapper":填入我们需要绑定的接口 Dao/Mapper-->
<mapper namespace="com.xiaoli.dao.UserDao">
<!--<select:需要执行sql语句 id="selectBlog":表示绑定的dao方法 resultType="Blog":表示返回的数据类型>-->
<select id="getUserList" resultType="com.xiaoli.pojo.User">
select *from mybatis.user
</select>
</mapper>
6.对mybatis-config.xml文件的Mapper标签进行修改,使其绑定我们需要执行的sql语句的xml文件
xml代码:
<!--每个mapper.xml文件都需要在mybatis的核心配置文件中进行绑定-->
<mappers>
<!--这里的配置需要在编写Dao的xml文件后配置-->
<mapper resource="com.xiaoli.dao/UserMapper.xml"/>
</mappers>
7.编写测试类,测试sql语句执行结果
测试代码:
package com.xiaoli.dao;
import com.xiaoli.pojo.User;
import com.xiaoli.util.MybatisUtil;
import org.apache.ibatis.session.sqlSession;
import org.junit.Test;
import java.util.List;
//测试sql语句执行结果
public class UserDaoTest {
@Test
public void test(){
//获取sqlSession对象
sqlSession sqlSession = MybatisUtil.getsqlSession();
//获取UserMapper.xml所对应的接口
UserDao mapper = sqlSession.getMapper(UserDao.class);
//执行sql语句,获取执行结果集(相当于ResultSet)
List<User> userList = mapper.getUserList();
//遍历
for (User user : userList) {
System.out.println(user);
}
}
}
运行结果:(可能会成功,也可能会出错)----resource加载文件必须使用 /
重新配置,运行:
移动目录:
修改mybatis-config.xml文件的mapper标签:
运行:
具体细节:
为什么mapper.xml文件需要保存在resources文件下?---------------------resource加载文件必须用 /
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。