码迷,mamicode.com
首页 > 其他好文 > 详细

MyBatis概念

时间:2018-12-13 01:20:14      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:节点   actor   win   web项目   文件   自动   持久化   etl   直接   

 MyBatis简介


    MyBatis是一个ORM数据持久层框架

    它在内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询,存储过程和高级映射

    将SQL语句写在配置文件中,和程序分离,利于维护

    什么是ORM

      ORM(Object Relational Mapping)是对象到数据库表的映射,即数据持久化

    使用eclipse

      1. 配置上Tomcat

        Window——pereferences——server——runtime Environment

      2. 配置Server         

        Window——show view——servers

        选择阿帕奇的tomcat7,然后就可以添加项目到tomcat

      3. 创建动态web项目

        选择创建项目Dynamic web project

    搭建MyBatis开发环境

      1. 导入MyBatis的jar

        log4j-1.2.17.jar——日志记录

        mybatis-3.2.2.jar——核心包

        mybatis-3.2.2-sources.jar——源码包MyBatis

                             mysql-connector-java-5.1.0-bin.jar——mysql驱动

        有四个,直接放lib下即可

      2.配置DTD

        配置config和mapper的DTD,让文件自动联想(自动提示)

      3.  添加mybatis配置文件

        在项目下面创建一个和src同级的文件夹resources

          1. 导入mybatis-config.xml (MyBatis核心配置文件)

          在 settings 节点下创建 typeAliases

<typeAliases>
            <!-- 一般都直接指定包名。使用时直接写实体类的名称即可 -->
            <package name="com.xxx.pojo"/> 
</typeAliases>

 

          在最下面的mappers节点中创建mapper节点,将mapper文件加载到配置文件中(每个mapper文件都需要配置一下)

<mappers>
        <mapper resource="com/xxx/dao/UserMapper.xml" />
</mappers>

 

        2. 导入database.properties

          database.properties文件用来指定连接数据库的配置信息

        3. 导入log4j.properties

          error:将日志输出在外部文件

 

        4.创建工具类util

          将(核心代码)读取配置文件的操作封装起来

          创建MyBatisUtil工具类

public class MyBatisUtil {
    //使用单例方式创建factory对象
    private static SqlSessionFactory factory=null;
    //在静态块中初始化factory对象
    static {
        //读取配置文件,需要用io流来读取
        InputStream is;
        try {
            //getResourceAsStream 按照访问输出流的方式获取资源
            //参数就是要读取的资源
            is = Resources.getResourceAsStream("mybatis-config.xml");
            //创建SqlSessionFactory对象
            factory = new SqlSessionFactoryBuilder().build(is);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
//        开启会话
    public static SqlSession openSqlSession() {
        return factory.openSession(true);
    }
//        关闭会话
    public static void closeSqlSession(SqlSession session) {
        session.close();
    }
}

 

 

        5. 创建实体类pojo

        6.在dao中创建接口

          接口的方法的名称必须和mapper.xml的对应的SQL语块的id一样

 

        7.在dao中创建mapper.xml配置文件

           在根节点mapper中,添加属性namespace

             namespace:命名空间

             namespace指定接口类的位置和名称(代表映射文件的存放位置,关联绑定接口)

 

          添加增删改查语句

          

        8.创建测试用例类test

           未把核心代码封装到工具类的demo

 

 1     //每个方法都必须加上@Test注解
 2     @Test
 3     public void test_Demo_01() {
 4         //将SqlSession对象创建到外层
 5         SqlSession session=null;
 6         try {
 7             //读取配置文件,需要用io流来读取
 8             //getResourceAsStream 按照访问输出流的方式获取资源
 9             //参数就是要读取的资源
10             InputStream is=Resources.getResourceAsStream("mybatis-config.xml");
11             //创建SqlSessionFactory对象,读取配置文件
12             //SqlSessionFactory 就代表sqlsession的工厂
13             SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
14             //创建sqlsession对象
15             //openSession 打开会话,true默认自动提交事务
16             session = factory.openSession(true);
17             
18             //调用mapper中的select方法
19             //selectOne 表示只查询了一个数
20             int count=session.selectOne("com.xxx.dao.UserMapper.UserCount");
21             
22             //输出查询出来的结果
23             System.out.println("总行数是:"+count);
24         } catch (IOException e) {
25             // TODO Auto-generated catch block
26             e.printStackTrace();
27         }finally {
28             //如果session不是空,则关闭
29             if(session!=null) {
30                 session.close();
31             }
32         }
33     }

          使用封装类后的demo

          

@Test
    //这是使用工具类的示例
    public void test_Demo_02() {
        //将SqlSession对象创建到外层
        SqlSession session=null;
        try {
            //将读取配置文件的代码封装到了工具类,所以用它创建session即可
            session = MyBatisUtil.openSqlSession();

            //调用mapper中的select方法
            //selectOne 表示只查询了一个数
            int count=session.selectOne("com.xxx.dao.UserMapper.UserCount");
            //输出查询出来的结果
            System.out.println("总行数是:"+count);
        }finally {
            //释放资源
            MyBatisUtil.closeSqlSession(session);
        }
    }

          将结果输出到日志中

//在方法外部获取日志,减少创建
private Logger logger = Logger.getLogger(test01.class);


//将把日志保存外部文件中,其他的方法都不会保存到外部文件
logger.error(user);

        使用Mapper接口方式操作数据

//使用Mapper接口方式操作数据,需要指定一个接口类
//然后.它相应的方法
List<User> users=session.getMapper(UserMapper.class).userList();

 

        

 

MyBatis概念

标签:节点   actor   win   web项目   文件   自动   持久化   etl   直接   

原文地址:https://www.cnblogs.com/buhuang-/p/10111582.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!