MyBatis入门(1)
MyBatis官网:https://mybatis.org/mybatis-3/zh/index.htm
- 什么是Mybatis?MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
我的第一个Mybatis程序
-
IDEA创建Maven项目
-
prom.xml中引入依赖,分三步,引入mybatis,引入MySQL驱动,引入junit
- 引入mybatis
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency>
- 引入MySQL驱动
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.22</version> </dependency>
- 引入junit,用于java测试
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency>
-
结果如图:点击如图
-
编写mybatis-config.xml文件:
其中
- driver是驱动名
- url是MySQL的url
- username是用户名
- password是数据库用户的密码
- mappers是每一个mapper都要配置的!!!切记!!!不能忘,一般每一个实例一个mapper
<?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="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=Asia/Shanghai"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <!--每一个xml都要注册--> <mappers> <mapper resource="com/lwh/dao/UserMapper.xml"/> </mappers> </configuration>
-
编写实体类
package com.lwh.pojo; public class User { private int id; private String name; private String pwd; public User(){ } (为了展示明了,简洁,展示时省略tostring和get,set方法,请读者误偷懒,否则报错) }
-
编写dao层
UserDao:
package com.lwh.dao; import com.lwh.pojo.User; import java.util.List; public interface UserDao { List<User> getUserList(); }
UserMapper:
其中
- namespace是Dao接口的地址,包名.Dao名
- select中的id是Dao层中的方法,
- resultType是返回的实体类的方法
- 最后select中包裹的是SQL语句
<?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.lwh.dao.UserDao"> <select id="getUserList" resultType="com.lwh.pojo.User"> select * from user </select> </mapper>
-
编写工具类MyBatisUtils:
package com.lwh.utils; 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 MybatisUtils { private static SqlSessionFactory sqlSessionFactory; static { String resource = "mybatis-config.xml";//资源目录底下的mybatis的主配置文件 InputStream inputStream = null; try { inputStream = Resources.getResourceAsStream(resource);//io流读取配置文件 } catch (IOException e) { e.printStackTrace(); } sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//获取一个sql工厂实例 } public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession();//获取一个会话实例 } }
-
编写测试类
在test目录下创建一个与dao层目录结构一样的目录(规范)
package com.lwh.dao; import com.lwh.pojo.User; import com.lwh.utils.MybatisUtils; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import java.util.List; public class UserDaoImpl { @Test public void test(){ //获取连接 SqlSession sqlSession= MybatisUtils.getSqlSession(); //执行sql UserDao userDao=sqlSession.getMapper(UserDao.class); // List<User> list=userDao.getUserList(); for (User user:list) { System.out.println(user); } sqlSession.close(); } }
-
运行
代码目录: