MyBatis快速上手
什么是MyBatis?
官网介绍:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
用我自己的话来介绍就是:MyBatis是一个封装lJDBC操作的第三放优秀开源框架,它是一个半自动ORM框架,其特点就是灵活高效,程序员自己写SQL语句;其不足就是当切换数据库时,需针对不同数据库写不同版本的SQL。
1.简单入门,快速搭建一个MyBatis开发环境
详情可参考中文官网:http://www.mybatis.org/mybatis-3/zh/getting-started.html
-
创建一个maven项目,引入mybatis、mysql-connector相关依赖
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version> 3.5.2</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.44</version> </dependency>
-
创建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> <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/test"/> <property name="username" value="root"/> <property name="password" value="a"/> </dataSource> </environment> </environments> <mappers> <!--指明SQL映射文件的路径--> <mapper resource="mapper/StudentMapper.xml"/> </mappers> </configuration>
-
创建mapper映射SQL文件(注意位置:我这用的是idea,需要放在resources下)
<?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影射文件所在的包--> <mapper namespace="mapper"> <!--id很重要,相当于函数名--> <select id="listAllStudents" resultType="com.tys.bean.Student"> select * from student </select> </mapper>
-
创建实体类Student
@Data //这里使用了lombok插件,有兴趣大家可以搜索一下 public class Student { private Integer sid; private String sname; private char ssex; private char sage; }
-
正式书写测试Test
public class Test { public static void main(String[] args)throws Exception { String resource = "mybatis.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); //listAllStudents就是sql语句的id List<Student> listAllStudents = sqlSession.selectList("listAllStudents"); for (Student student:listAllStudents) { System.out.println(student); } } }
-
运行结果
-
最后,贴一下项目的架构图