初探MyBatis之HelloWorld(一)
官方地址:https://github.com/mybatis/mybatis-3
准备:
官方中文文档地址:http://www.mybatis.org/mybatis-3/zh/getting-started.html
1、导入MyBatis的jar包和mysql连接驱动(maven):
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.1</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency>
2、新建数据库和表,并在表中插入几条测试数据:
3、创建javabean对应数据表:
Employee.java:
1 package yyc.mybatis.bean; 2 3 public class Employee { 4 private Integer id; 5 private String lastName; 6 private char gender; 7 private String email; 8 public Integer getId() { 9 return id; 10 } 11 public void setId(Integer id) { 12 this.id = id; 13 } 14 15 public String getLastName() { 16 return lastName; 17 } 18 public void setLastName(String lastName) { 19 this.lastName = lastName; 20 } 21 public char getGender() { 22 return gender; 23 } 24 public void setGender(char gender) { 25 this.gender = gender; 26 } 27 public String getEmail() { 28 return email; 29 } 30 public void setEmail(String email) { 31 this.email = email; 32 } 33 @Override 34 public String toString() { 35 return "Employee [id=" + id + ", lastName=" + lastName + ", gender=" + gender + ", email=" + email + "]"; 36 } 37 38 }
一、使用 XML 构建 SqlSessionFactory
官方文档中给的是:
String resource = "org/mybatis/example/mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
我在这里将它封装为一个类的静态方法:
MySqlSessionFacoty.java:
1 package yyc.mybatis.util; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 6 import org.apache.ibatis.io.Resources; 7 import org.apache.ibatis.session.SqlSessionFactory; 8 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 9 10 public class MySqlSessionFacoty { 11 12 public static SqlSessionFactory getSqlSessionFactory() throws IOException{ 13 String resource = "mybatis-config.xml"; 14 InputStream inputStream = Resources.getResourceAsStream(resource); 15 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 16 return sqlSessionFactory; 17 } 18 }
映射SQL语句:
EmployeeMapperXml.xml:
<?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="yyc.mybatis.EmployeeMapper"> <!-- resultType:返回类型 #{id}:从传递过来的参数中获取id值 --> <select id="selectEmp" resultType="yyc.mybatis.bean.Employee"> select id,last_name lastName,gender,email from tb1_employee where id = #{id} </select> </mapper>
XML 配置文件(configuration XML)中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager)。
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:///mybatis"/> <property name="username" value="root"/> <property name="password" value="123"/> </dataSource> </environment> </environments> <!-- 将我们写好的sql映射文件注册到全局配置文件中 --> <mappers> <!-- xml映射配置方式 --> <mapper resource="EmployeeMapperXml.xml"/> </mappers> </configuration>
测试方法:
/** * 1.根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象 * 2.sql配置文件:配置了每一个sql,以及sql的封装规则 * 3.将sql配置文件注册在全局配置文件 * 4.写代码: * (1)、根据全局配置文件得到SqlSessionFactory对象 * (2)、使用SqlSessionFactory获取sqlsession,使用它来实现crud * 一个sqlsession就是代表和数据库的一次会话,用完关闭 * @throws IOException */ @Test public void testXml() throws IOException{ SqlSessionFactory sqlSessionFactory = MySqlSessionFacoty.getSqlSessionFactory(); //2.获取sqlSession实例,能直接执行已经映射的sql语句 SqlSession openSession = sqlSessionFactory.openSession(); try { //1.唯一标识符(namespace + id) //2.执行sql需要用到的参数 Employee employee = openSession.selectOne("yyc.mybatis.EmployeeMapper.selectEmp", 1); System.out.println(employee); } catch (Exception e) { e.printStackTrace(); }finally { openSession.close(); } }
输出:
Employee [id=1, lastName=tom, gender=0, email=aa@163.com]