Mybatis-快速开始
- 案例:查询数据库中user表的数据,并打印;
1.1 建库建表
-
新建数据库mybatisdb,并创建user表;
1.2 创建项目/module,导入坐标
-
新建module,导入Mybatis框架、mysql、Junit坐标;
1.3 编写Mybatis核心配置文件
-
为了解决硬编码问题,将数据库配置信息放在
jdbc.properties
文件中,并在Mybatis配置文件mybatisConfig.xml
中引入;jdbc.properties
文件
mysql.driver=com.mysql.cj.jdbc.Driver mysql.url=jdbc:mysql://localhost:3306/mybatisdb mysql.username=root mysql.password=12345678
mybatisConfig.xml
文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 1.引入jdbc.properties文件 --> <properties resource="jdbc.properties"/> <!-- 2.配置数据库环境【这里仅配置了mysql数据库环境,还可以配置其他数据库环境】 --> <environments default="development"> <environment id="development"> <!-- 2.1 配置事务管理器 --> <transactionManager type="JDBC"/> <!-- 2.2 配置数据源 --> <dataSource type="POOLED"> <property name="driver" value="${mysql.driver}"/> <property name="url" value="${mysql.url}"/> <property name="username" value="${mysql.username}"/> <property name="password" value="${mysql.password}"/> </dataSource> </environment> </environments> <!-- 3.配置映射器 --> <mappers> <mapper resource="UserMapper.xml" /> </mappers> </configuration>
1.4 编写SQL映射文件
-
在resource目录下新建
UserMapper.xml
文件;<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- 1.设置命名空间,用于区分不同的映射器文件,防止方法名冲突 --> <mapper namespace="test"> <!-- 2.SQL映射语句 --> <select id="selectAllUser" resultType="com.sea.domain.User"> select * from User; </select> </mapper>
- 还可以:1.参数映射:设置占位符,传入参数;2.结果映射:通过标签属性设置返回结果映射的类型;
<select id="getUser" parameterType="int" resultType="com.example.User"> SELECT * FROM users WHERE id = #{userId} </select>
1.5 编码:加载和执行SQL语句
-
定义实体类:User类
/** * @author: sea * @date: 2023/7/5 16:25 */ public class User implements Serializable { int id; String username; String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "user{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }
-
加载Mybatis配置文件,创建SqlSession对象执行SQL语句;
/** * @author: sea * @date: 2023/7/5 16:09 */ public class App { public static void main(String[] args) throws IOException { //1.加载Mybatis配置文件【Mybatis提供了Resource工具类,用于加载类路径下的资源文件】 String resource = "mybatisConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); //2.创建SqlSessionFactory对象【SqlSessionFactory是MyBatis的核心接口之一,用于创建和管理数据库会话对象】 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //3.使用SqlSessionFactory对象的openSession()方法创建一个 SqlSession 对象 //SqlSession表示与数据库的一次会话,可以用于执行 SQL 语句和管理事务。 try(SqlSession sqlSession = sqlSessionFactory.openSession()){//SqlSession使用完毕后自动释放资源 //4.执行查询操作并打印结果 List<User> userList = sqlSession.selectList("test.selectAllUser"); for (User user1 : userList) { System.out.println(user1); } } } }
-
运行结果: