<MyBatis>入门一 HelloWorld

1.HelloWorld

导入依赖

        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

创建一个员工数据库

CREATE TABLE `tbl_employee` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `last_name` varchar(255) DEFAULT NULL,
  `gender` char(1) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8

编写实体类

public class Employee {

    private Integer id;

    private String name;

    private Character gender;

    private String email;

  ... }

创建一个全局配置文件 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/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 将写好的mapper注册到全局配置文件中 -->
    <mappers>
        <mapper resource="EmployeeMapper.xml" />
    </mappers>
</configuration>

编写映射文件Mapper

<?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">
<!--namespace 名称空间
         作用:用于绑定接口,即使用namespace将映射文件和接口绑定,就不需要写实现类了
     指定为接口的全类名
--> <mapper namespace="org.maple.dao.EmployeeMapper"> <!--id 唯一标识 :对应接口中的哪个方法 resultType 返回类型,对应实体类的Employee --> <select id="selectEmp" resultType="org.maple.pojo.Employee"> select id,last_name name,email,gender from tbl_employee where id = #{id} </select> </mapper>

编写测试类

public class MybatisTest {

    @Test
    public void test01() throws IOException {
        //读取配置文件
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        //创建sqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
        //获取sqlSession实例,能直接执行已经映射的sql语句
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //执行查询方法
        try {
            Employee employee = sqlSession.selectOne("org.maple.dao.EmployeeMapper.selectEmp", 1);
            System.out.println(employee);
        }finally {
            //关闭sqlSession
            sqlSession.close();
        }
    }
}

2.通过接口的方式

员工Crud接口

public interface EmployeeMapper {

    Employee getEmpById(Integer id);
}
员工Mapper文件
<?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">
<!--namespace 名称空间
         作用:用于绑定接口,即使用namespace将映射文件和接口绑定,就不需要写实现类了
-->
<mapper namespace="org.maple.mapper.EmployeeMapper">

    <!--id 唯一标识 :对应接口中的哪个方法
        resultType 返回类型,对应实体类的Employee
    -->
    <select id="getEmpById" resultType="org.maple.pojo.Employee">
        select id,last_name name,email,gender from tbl_employee where id = #{id}
    </select>
    
</mapper>

测试方法

public class MybatisTest {

    @Test
    public void test01() throws IOException {
        //读取配置文件
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        //创建sqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
        //获取sqlSession实例,能直接执行已经映射的sql语句
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //执行查询方法
        try {
       //获取接口的代理对象 EmployeeMapper mapper
= sqlSession.getMapper(EmployeeMapper.class); Employee emp = mapper.getEmpById(1); System.out.println(emp); }finally { //关闭sqlSession sqlSession.close(); } } }

 1、接口式编程
	原生:		Dao		====>  DaoImpl
	mybatis:	Mapper    ====>  xxMapper.xml
 2、SqlSession代表和数据库的一次会话;用完必须关闭; 3、SqlSession和connection一样都是非线程安全。每次使用都应该去获取新的对象。 4、mapper接口没有实现类,但是mybatis会为这个接口生成一个代理对象。 (将接口和xml进行绑定) EmployeeMapper empMapper = sqlSession.getMapper(EmployeeMapper.class); 5、两个重要的配置文件: mybatis的全局配置文件:包含数据库连接池信息,事务管理器信息等...系统运行环境信息 sql映射文件:保存了每一个sql语句的映射信息: 将sql抽取出来。       
 1、根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象 有数据源一些运行环境信息 2、sql映射文件;配置了每一个sql,以及sql的封装规则等。 3、将sql映射文件注册在全局配置文件中 4、写代码:    1)、根据全局配置文件得到SqlSessionFactory; 2)、使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查 一个sqlSession就是代表和数据库的一次会话,用完关闭 3)、使用sql的唯一标志来告诉MyBatis执行哪个sql。sql都是保存在sql映射文件中的。 

猜你喜欢

转载自www.cnblogs.com/mapleins/p/10111826.html