• Mybaits成长之路


     今天刚开始接触mybaits,接下来介绍mybaits的demo的建立

    1根据数据库表定义一个实体类Employee

    package com.atguigu.mybatis.bean;

    public class Employee {

    private Integer id;
    private String lastName;
    private String email;
    private String gender;


    public Integer getId() {
    return id;
    }
    public void setId(Integer id) {
    this.id = id;
    }
    public String getLastName() {
    return lastName;
    }
    public void setLastName(String lastName) {
    this.lastName = lastName;
    }
    public String getEmail() {
    return email;
    }
    public void setEmail(String email) {
    this.email = email;
    }
    public String getGender() {
    return gender;
    }
    public void setGender(String gender) {
    this.gender = gender;
    }
    @Override
    public String toString() {
    return "Employee [id=" + id + ", lastName=" + lastName + ", email="
    + email + ", gender=" + gender + "]";
    }

    }

    属性和数据库名名字一样,只有lastName不和数据库字段对应,这是我故意写的,等会就介绍为什么这样

    2 导入相关jar包,配置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>
    <!-- 将我们写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中 -->
    <mappers>
    <mapper resource="EmployeeMapper.xml" />
    </mappers>
    </configuration>

    3写一个接口用来动态绑定sql

    package com.atguigu.mybatis.dao;

    public interface EmployeeMapper {

    public Employee getEmpById(Integer id);

    }

    4配置EmployeeMapper.xml,动态绑定EmployeeMapper.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="com.atguigu.mybatis.dao.EmployeeMapper">//这里是接口的全路径名
    <!--
    namespace:名称空间;指定为接口的全类名
    id:唯一标识
    resultType:返回值类型
    #{id}:从传递过来的参数中取出id值

    public Employee getEmpById(Integer id);
    -->
    <select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee">//id为接口的方法名
    select id,last_name lastName,email,gender from tbl_employee where id = #{id}
    </select>
    </mapper>

    5写一个测试类进行测试

    package com.atguigu.mybatis.test;

    import java.io.IOException;
    import java.io.InputStream;

    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 org.junit.Test;

    import com.atguigu.mybatis.bean.Employee;
    import com.atguigu.mybatis.dao.EmployeeMapper;

    /**
    * 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抽取出来。
    *
    *
    * @author lfy
    *
    */
    public class MyBatisTest {

    public SqlSessionFactory getSqlSessionFactory() throws IOException {
    String resource = "mybatis-config.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    return new SqlSessionFactoryBuilder().build(inputStream);
    }

    /**
    * 1、根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象 有数据源一些运行环境信息
    * 2、sql映射文件;配置了每一个sql,以及sql的封装规则等。
    * 3、将sql映射文件注册在全局配置文件中
    * 4、写代码:
    * 1)、根据全局配置文件得到SqlSessionFactory;
    * 2)、使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查
    * 一个sqlSession就是代表和数据库的一次会话,用完关闭
    * 3)、使用sql的唯一标志来告诉MyBatis执行哪个sql。sql都是保存在sql映射文件中的。

    @Test
    public void test01() throws IOException {
    // 1、获取sqlSessionFactory对象
    SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
    // 2、获取sqlSession对象
    SqlSession openSession = sqlSessionFactory.openSession();
    try {
    // 3、获取接口的实现类对象
    //会为接口自动的创建一个代理对象,代理对象去执行增删改查方法
    EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
    Employee employee = mapper.getEmpById(1);

    System.out.println(mapper.getClass());
    System.out.println(employee);
    } finally {
    openSession.close();
    }

    }

    }

  • 相关阅读:
    BZOJ 2064: 分裂( 状压dp )
    BZOJ 2096: [Poi2010]Pilots( set )
    BZOJ 3444: 最后的晚餐( )
    BZOJ 3156: 防御准备( dp + 斜率优化 )
    BZOJ 1770: [Usaco2009 Nov]lights 燈( 高斯消元 )
    BZOJ 2466: [中山市选2009]树( 高斯消元 )
    BZOJ 1316: 树上的询问( 点分治 + 平衡树 )
    codevs 1074
    bzoj 1015
    bzoj 1798
  • 原文地址:https://www.cnblogs.com/zhangzhiqin/p/8541884.html
Copyright © 2020-2023  润新知