Mybatis学习笔记 1
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。
MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和POJO为数据库中的记录。
如何获得Mybatis的三种方式
-
Maven仓库
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.9</version> </dependency>
-
Github
https://github.com/mybatis/mybatis-3
-
中文文档:
https://mybatis.org/mybatis-3/zh/index.html
第一个Mybatis程序
-
搭建环境
-
新建一个Maven项目
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.46</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.9</version> </dependency>
-
编写核心配置文档
<?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>
-
编写mybatis工具类
public class MybatisUtil { private static SqlSessionFactory sqlSessionFactory = null; static { InputStream inputStream; try { String resource = "mybatis-config.xml"; inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } public static SqlSession getSqlSession() { return sqlSessionFactory.openSession(); } }
-
编写代码实体类
public class User { private int id; private String name; private String pwd; public int getId() { return id; } public void setId(int id) { this.id = id; } ........ }
-
编写对应的Dao接口
public interface UserDao { public List<User> getUserList(); }
-
接口实现类由原来的UserDaoImpl转变为一个Mapper文件
public class UserDaoImpl implements UserDao { @Override public List<User> getUserList() { return null; } }
<?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="spring.helloMybatis.test01.UserDao"> <select id="getUserList" resultType="spring.helloMybatis.test01.User"> select * from mybatis.user where id = #{id} </select> </mapper>
-
测试
public void test() { //第一步,获取sqlSession对象 SqlSession sqlSession = MybatisUtil.getSqlSession(); //方式一:通过getMapper UserDao userDao = sqlSession.getMapper(UserDao.class); List<User> userList = userDao.getUserList(); for (User user :userList) { System.out.println(user.toString()); } //方式二:通过命名空间 List<User> selectList = sqlSession.selectList("spring.helloMybatis.test01.UserDao.getUserList"); for (User user :selectList) { System.out.println(user.toString()); } //关闭sqlSession qlSession.close(); }
-
特别注意点
//namespace中的包名其实就是接口名 <mapper namespace="spring.helloMybatis.test01.UserDao"> //id其实就是接口中的方法名 <select id="getUserList" resultType="spring.helloMybatis.test01.User"> select * from mybatis.user where id = #{id} </select>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现