美文网首页
mybatis入门

mybatis入门

作者: testtest | 来源:发表于2018-02-01 00:02 被阅读0次

    什么是 MyBatis

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

    Mybatis入门

    代码结构

    代码结构.PNG
    1. 首先需要mybatis的配置文件(mybatis-config.xml),XML 配置文件(configuration XML)中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager)


      mybatis-config.PNG
    dbconfig.PNG
    1. POJO
    package com.beans.mybatis.demmo.pojo;
    
    public class User {
        
        private String id;
        
        private String name;
        
        public User() {
            super();
        }
    
        public User(String id, String name) {
            super();
            this.id = id;
            this.name = name;
        }
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public String toString() {
            return "User [id=" + id + ", name=" + name + "]";
        }
    }
    
    
    1. dao层接口
    package com.beans.mybatis.demmo.dao;
    
    import com.beans.mybatis.demmo.pojo.User;
    
    public interface UserDao {
        
        User selectUserById(String id) throws Exception;
    
    }
    
    1. dao层实现
    package com.beans.mybatis.demmo.dao;
    
    import java.io.IOException;
    
    import com.beans.mybatis.demmo.pojo.User;
    import com.beans.mybatis.demmo.utils.SqlSessionFactoryUtils;
    
    public class UserDaoImpl implements UserDao {
    
        @Override
        public User selectUserById(String id) throws Exception {
            //通过namespace中的值+id的值组合起来作为key
            User user = SqlSessionFactoryUtils.getSqlSession().selectOne("aa.selectUserById", id);
            
            //通过getMapper方式查询
            //UserDao dao = SqlSessionFactoryUtils.getSqlSession().getMapper(UserDao.class);
            //User user = dao.selectUserById(id);
            return user;
        }
    
    }
    
    
    1. 映射文件
    <?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="aa"><!-- 如果使用getMapper则namespace的值必须是dao层接口的名称(本例中为UserDao ),如果不使用,那么namespace值可以随意取值,一般需要取和该dao相关的-->
        <!-- 如果使用getMapper则id的值必须是dao层接口中的方法名称,如果不是,则可以随意取值,但还是希望取值时和方法名一样 -->
        <select id="selectUserById" resultType="com.beans.mybatis.demmo.pojo.User">
            select * from user where id = #{id}
        </select>
    </mapper>
    
    1. 获取sqlSession的方法
    package com.beans.mybatis.demmo.utils;
    
    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;
    
    public class SqlSessionFactoryUtils {
        
        
        public static SqlSession getSqlSession() throws IOException
        {
            String confPath = "conf/mybatis-config.xml";
            InputStream stream = Resources.getResourceAsStream(confPath);
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(stream);
            SqlSession sqlSession = sessionFactory.openSession();
            return sqlSession;
        }
    
    }
    
    

    总结

    mybatis的配置文件中需要注意:

    1. 配置数据源
    2. 引入xml映射文件

    xml映射文件中需要注意:

    1. namespace 如果使用getMapper方式,该值就必须是dao层接口的类名,否则,随意。
    2. id 如果使用getMapper方式,该值就必须是dao层类中方法名,否则,随意。

    相关文章

      网友评论

          本文标题:mybatis入门

          本文链接:https://www.haomeiwen.com/subject/kvlrzxtx.html