• 使用maven创建项目配置mybatis


    一个mybatis的构建需要六部分:依赖包的导入,创建pojo,配置核心配置文件,配置映射文件,创建mybatis的工具类,测试

    1.首先在myeclipse中创建一个maven项目,然后导入依赖包

    <dependencies>
            <!-- mybatis核心包 -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.2.8</version>
            </dependency>
            <!-- jdbc的包 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.32</version>
            </dependency>
            <!-- 查看日志文件的log4j包 -->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.12</version>
            </dependency>
            <!-- 测试用的依赖包 -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
            </dependency>
        </dependencies>

    2.创建一个Student的pojo

    注意:如果数据表字段是int类型的数据,建议pojo中使用Integer来修饰,因为int的默认值是0,不是null,可能在进行sql操作时出错,

    private Integer id;
    
        private String sname;
    
        private String address;
    
        private String sex;
    
        private Integer tid;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getSname() {
            return sname;
        }
    
        public void setSname(String sname) {
            this.sname = sname == null ? null : sname.trim();
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address == null ? null : address.trim();
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex == null ? null : sex.trim();
        }
    
        public Integer getTid() {
            return tid;
        }
    
        public void setTid(Integer tid) {
            this.tid = tid;
        }
    
        @Override
        public String toString() {
            return "Student [id=" + id + ", sname=" + sname + ", address=" + address + ", sex=" + sex + ", tid=" + tid
                    + "]";
        }

    3.创建mybatis的核心配置文件

    mybatis的核心配置文件并不像hibernate一样必须使用特定的名称,这里我创建的是mybatis.xml

    在对jdbc的连接配置时,可以通过properties文件,也可以不使用,如果使用的话,需要在标签的最上面使用<properties resource="db.properties"></properties>来引入自己配置的properties文件,并在下面通过${}来引用properties中的属性名

    <?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>
        <properties resource="db.properties"></properties>
        <!-- 接收数据库的数据源(元数据) default默认读取以下的配置 -->
        <environments default="mysql">
            <!-- 针对不同的数据库来配置元数据 id:区分元数据 -->
            <!-- 配置MySQL -->
            <environment id="mysql">
                <!-- 事务的管理交给jdbc管理 -->
                <transactionManager type="jdbc" />
                <!-- 不使用properties手动配置
                    <dataSource type="pooled">
                        <property name="driver" value="com.mysql.jdbc.Driver" />
                        <property name="url" value="jdbc:mysql://localhost:3306/test" />
                        <property name="username" value="root" />
                        <property name="password" value="root" />
                    </dataSource> 
                -->
                <!-- 使用properties加载properties中的属性 -->
                <dataSource type="pooled">
                    <property name="driver" value="${driver}" />
                    <property name="url" value="${url}" />
                    <property name="username" value="${username}" />
                    <property name="password" value="${password}" />
                </dataSource>
            </environment>
    
            <!-- 配置Oracle -->
            <environment id="oracle">
                <!-- 事务的管理交给odbc管理 -->
                <transactionManager type="jdbc" />
                <dataSource type="pooled">
                    <property name="driver" value="com.mysql.jdbc.Driver" />
                    <property name="url" value="jdbc:oracle:thin:@localhost:1521/test" />
                    <property name="username" value="scott" />
                    <property name="password" value="123456" />
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="StudentMapper.xml" />
        </mappers>
    </configuration>
    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/test
    username=root
    password=root

    4.创建映射文件

    <?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命名必须是唯一的,前期可以直接以所映射的pojo类的唯一路径来命名 -->
    <mapper namespace="com.oracle.pojo.Student">
        <!-- 
            mybaits通过自己手动写sql语句来对数据库进行操作,select就是查询操作
            同样有update,delete,insert
            id:标识符,测试时调用的标识符来调用sql语句,相当于方法名
            resultType:返回值类型
            parameterType:传入的参数类型
            如果是引用数据类型的话,需要传入完整的路径.如:java.lang.String以及对象com.oralc.pojo.Student
            在下方的条件需要以#{}来占位,如果传入类型是对象型,需要与对象的属性名一致
         -->
        <select id="findStudentById" resultType="com.oracle.pojo.Student" parameterType="int">
            select * from student where id=#{id}
        </select>
        <select id="findAll" resultType="com.oracle.pojo.Student">
            select * from student
        </select>
    </mapper>

    5.创建mybatis的工具类

    这里使用ThreadLocal类,用来绑定线程,当程序执行时作为一个线程,无论执行到dao层或是其他层,从该线程中获取的session都是同一个session

    public class MybatisUtil {
        private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
        private static SqlSessionFactory sqlSessionFactory;
    
        static {
            try {
                // 读取mybatis核心配置文件
                Reader reader = Resources.getResourceAsReader("mybatis.xml");
                // 创建会话工厂
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
        public static SqlSession getSession() {
            // 获取会话
            SqlSession sqlSession = threadLocal.get();
            if (sqlSession == null) {
                // 从会话工厂获取session
                sqlSession = sqlSessionFactory.openSession();
                // 绑定会话工厂
                threadLocal.set(sqlSession);
            }
            return sqlSession;
        }
    
        public static void close() {
            SqlSession sqlSession = threadLocal.get();
            if (sqlSession != null) {
                sqlSession.close();
            }
        }
    }

    6.测试

    public class Test {
        private SqlSession session = null;
    
        @Before
        public void before() {
            //获取会话
            session = MybatisUtil.getSession();
        }
    
        @org.junit.Test
        public void add() {
            /**
             * 从会话中调用映射文件中的sql语句,为了防止不同的映射文件标识符重复,通过namespace.标识符来调用
             * 如果后面有参数的话,在后面添加参数
             */
            Student student = session.selectOne("com.oracle.pojo.Student.findStudentById",1);
            System.out.println(student);
            List<Student> studentList = session.selectList("com.oracle.pojo.Student.findAll");
            for (Student student2 : studentList) {
                System.out.println(student2);
            }
        }
    
        @After
        public void after() {
            session.commit();
            MybatisUtil.close();
        }
    }

    测试结果

     

  • 相关阅读:
    Cents 7 Kubernetes
    Docker registry
    centos 7 安装 docker
    ToList()所带来的性能影响
    C#之Linq、where()、FindAll()的区别
    2.2 数据库高速缓冲区
    ORACLE之autotrace使用
    spring.net简介
    初识批处理
    TIBCO Rendezvous — 技术介绍
  • 原文地址:https://www.cnblogs.com/mhm111/p/11383885.html
Copyright © 2020-2023  润新知