MyBatis总结一:快速入门
简介
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
快速入门:
1,创建java项目,并引入相应的jar包 mysql,mybatis
<!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.32</version> </dependency> <!--mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.8</version> </dependency>
2,使用MyBatis查询数据库信息(这里提前准备好了数据库的User表信息)
2.1,创建User对应的实体类
package com.zy.domain; public class User { private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}'; } }
2.2,在resources下面创建了如下的文件:
jdbc.properties(存放数据库连接信息):
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatisdb?useUnicode=true&characterEncoding=utf8&autoReconnect=true\ &allowMultiQueries=true jdbc.username=root jdbc.password=root
UserMapper.xml(存放User的映射):
<?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 : 当前这个配置文件的唯一标识, 自定义, 但是不能和其他配置文件namespace重复 --> <mapper namespace="userMapper"> <!-- 定义一条sql语句, 其实就是一个 statement select 代表是查询语句, 与其类似的还有 insert, update, delete等 id : 这条sql语句的唯一标识,自定义,但是不能和其他sql语句重复 parameterType: sql语句需要的参数类型, 需要写 类的全路径 resultType: sql语句返回的结果类型 --> <select id="getUserById" parameterType="int" resultType="com.zy.domain.User"> <!--这里写具体的sql语句, #{}是占位符, 编译时会被替换成?, 然后注入真实参数--> select * from user where id=#{id} </select> </mapper>
mybatis-config.xml(配置数据库信息,注册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> <!--加载外部属性--> <properties resource="jdbc.properties"/> <!--运行环境可以配置多个, default指定默认使用哪个--> <environments default="development"> <!--配置环境, id是这个环境的唯一标识--> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <!--注册mapper文件--> <mappers> <mapper resource="UserMapper.xml"/> </mappers> </configuration>
2.3,创建Test类 测试
package com.zy.test; import com.zy.domain.User; 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.InputStream; public class Test01 { public static void main(String[] args) { //mybatis的配置文件 String resource = "mybatis-config.xml"; //使用MyBatis提供的Resources类 获取输出流 加载mybatis的配置文件 //InputStream inputStream = Resources.getResourceAsStream(resource); //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件) InputStream inputStream = Test01.class.getClassLoader().getResourceAsStream(resource); //构建sqlsession工厂 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //创建能执行映射文件中sql的sqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); // 执行statement, 需要指定两个参数: // 1 确定哪个sql语句: mapper文件的namespace + sql语句的id // 2 sql语句需要的参数 User user = sqlSession.selectOne("userMapper.getUserById", 1); System.out.println(user); } }
最终运行结果: