一 、mybatis入门

it2026-03-25  0

Mybatis(就是简化JDBC,给一个框架) Mybatis

一、第一个mybatis 先搭建一下 记得启动Maven 用database连接数据库

1、编写mybatis-config.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核心配置文件--> <configuration> <!-- 别名 --> <typeAliases> <package name="entity"/> </typeAliases> <!-- 数据库环境,连接数据库 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8&amp;useSSL=true&amp;serverTimezone=Asia/Shanghai"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!-- 映射文件 --> <mappers> <mapper resource="com/join/dao/UserMapper.xml"/> </mappers> </configuration>

2、mybatis的util工具类

public class MybatisUtils { private static SqlSessionFactory sqlSessionFactory; /** * 放在静态快中,刚初始就会被加载 * 下面三句是固定的 */ static { try { //使用Mybatis第一步:获取sqlSessionFactory对象 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } /** * 既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。SqlSession * 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。 */ //第二步,获取SqlSession连接 public static SqlSession getSession(){ return sqlSessionFactory.openSession(); } }

3.配置mapper的xml文件(实现由原来的的UserDaoImpl转变为一个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"> <!-- 举例sql查询 namespace = 绑定一个对应的Dao/Mapper接口,唯一定位 代替了原来的..daoImpl,更加简单化,只要写接口即可 id对应着原来impl重写方法的名字,也就对应着接口中的名字 里面是sql语句 resultType:返回结果类型,所有返回泛型中所对应的集合 mybatis.user记得要这样写,在database中会有很多课数据库,要注意一下 所有的都要一一对应 --> <mapper namespace="com.join.dao.UserDao"> <select id="getUserList" resultType="com.join.entity.User"> select * from user </select> </mapper>

4.写一个实体类

public class User { private int id; //id private String name; //姓名 private String pwd; //密码 //构造,有参,无参 //set/get //toString() }

5.写一个Dao(Mapper)接口

package com.join.dao; import com.join.entity.User; import java.util.List; /** * dao等价于以后的mapper */ public interface UserDao { List<User> getUserList(); }

6.测试一下

package com.join.dao; import com.join.entity.User; import com.join.utils.MybatisUtils; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import java.util.List; /** * 注意;1.org.apache.ibatis.binding.BindingException: Type interface com.join.dao.UserDao is not known to the MapperRegistry. * 记得在映射文件 ,配置路径 * 2.org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource com/join/dao/UserMapper.xml *maven由于他的约定大于配置,我们之后可以能遇到我们写的配置文件,无法被导出或者生效的问题,解决方案: *要在pom.xml中build中配置resource,来防止资源导出失败的问题 * 3.配置中一定要一一对应 * 4.刚才又出现了错误,是因为忘记maven要导入一下刚才的resource * * * * */ public class UserDaoTest { @Test public void selectUser() { //1.获取SqlSession对象 SqlSession sqlSession = MybatisUtils.getSession(); //方法一: //List<User> users = session.selectList("com.kuang.mapper.UserMapper.selectUser"); //方法二,执行,以后直接用Mapper代替Dao: UserDao mapper = sqlSession.getMapper(UserDao.class); List<User> users = mapper.getUserList(); for (User user: users){ System.out.println(user); } sqlSession.close(); } }

Demo放在了gitee上面了

最新回复(0)