mybatis学习笔记(1):搭建开发环境,以及mybatis各个配置文件之间的关系

一、环境

1.myeclipse10.7

2.数据库:mysql

3.jdk:jdk1.8

4.jar包:mybatis3.2.0.jar   mysql-connector-java-5.1.22-bin.jar    log4j-1.2.16.jar 

二、步骤

1.新建一个web工程:mybatis001。

将所需Jar包都拷贝到工程的WebRoot\WEB-INF\lib目录下(或者建一个java工程)

mybatis学习笔记(1):搭建开发环境,以及mybatis各个配置文件之间的关系_第1张图片

2.mysql新建一个数据库表:mybatis001

mybatis学习笔记(1):搭建开发环境,以及mybatis各个配置文件之间的关系_第2张图片

3.在表中增加2条信息 


4.新建以下package

   (1)src->com.roles

   (2)src->com.roles->student

   (3)src->com.roles->student->model

   (4)src->com.roles->student->DAO(预留,所以这一节可以不建teacher这个包)

   (5)src->com.roles->teacher(预留,所以这一节可以不建teacher这个包)

   (6)src->config

   (7)src->config->mybatis

   (8)src->config->spring(预留,所以这一节可以不建spring这个包)

5.所有代码

   (1)在src->com.roles->student->model下建一个Student类

            <给不熟悉java或者myeclipse的朋友一个建议:在代码界面邮件点击,选择Source->Generate Getters and Setters..可以自动生成get()和set()函数>

                  

package com.roles.student.model;
/**
 * 
 * @author code陈
 *
 */
public class Student {
	
	private String name;
	//性别 1:男 0:女
	private String gender;
	private int age;
	private String id;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	
}
     (2)在src目录下新建一个Configuration.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>
    <typeAliases>
        <typeAlias alias="Student" type="com.roles.student.model.Student"/>
    </typeAliases>
    <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://127.0.0.1:3306/mybatis001" />
            <property name="username" value="root"/>
            <property name="password" value="mysql"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="config/mybatis/student.xml"/>
    </mappers>
</configuration>


<解释>

          (a)<typeAlias>将Student类取了一个别名,目的是为了方便,而不是必须得,如果不使用别名,就需要在任何需要Student的地方使用"com.roles.student.model.Student",显然别名方便多了。

          (b)<environment>主要是初始化连接的数据库的信息:ip、端口、数据库表、用户名和密码等等

          (c)<mappers>定义了sql查询语句的配置文件(比如student.xml),其实这个配置文件还能有表中字段名和实体类属性的映射关系,这个将在后面会学习到。

      (3)在src->config->mybatis下新建一个student.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.roles.student.model.studentMapper">
    <select id="getStudent" parameterType="String" resultType="Student">
        select * from student where id = #{id}
    </select>
     
</mapper> 
<解释>

       (a)namespace有点像package的意思,而都比较习惯用XXMapper的形式

       (b)<select>这个就是sql语句了,id=“ getStudent”这个id相当于一个函数名字,如果我们要使用这条查询语句,调用这个id即可,后面将会用到。parameterType则是查询条件的类型,String、id、map等等,这个很重要,resultType查询结果返回类型,这个需要和Configuration.xml中相应类的别名保持一致。

    (4)测试:在src目录下新建一个test包,包下新建一个test类(过程可以不用这么复杂,只是为了好管理代码而已)

package test;

import config.mybatis.*;
import java.io.Reader;

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 com.roles.student.model.Student;

import java.io.IOException;
public class test {
	/***
	   * 获得MyBatis SqlSessionFactory
	   * SqlSessionFactory 负责创建SqlSession ,一旦创建成功,就可以用SqlSession实例来执行映射语句
	   * @return
	   */
	private static SqlSessionFactory getSessionFactory(){
	    SqlSessionFactory sessionFactory=null;
	    String resource="Configuration.xml";
	     try {
	      sessionFactory=new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader(resource));
	    } catch (IOException e) {
	      e.printStackTrace();
	    }
	    return sessionFactory;
	  }
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 SqlSession session=getSessionFactory().openSession();
		try{
			//参数:映射文件的命名空间+sql语句id
			Student student = (Student)session.selectOne("com.roles.student.model.studentMapper.getStudent","2015051701");
			System.out.println("姓名:"+student.getName());
			String gender=student.getGender().equals("1")?"男":"女";
			System.out.println("性别:"+gender);
			System.out.println("年龄:"+student.getAge());
			System.out.println("学号:"+student.getId());
		 }
		 catch (Exception e) {
		      e.printStackTrace();
		    }
		  finally{
		      session.close();
		    }
	}

}

   (5)整个工程目录结构如下:

mybatis学习笔记(1):搭建开发环境,以及mybatis各个配置文件之间的关系_第3张图片

   (6)运行结果

mybatis学习笔记(1):搭建开发环境,以及mybatis各个配置文件之间的关系_第4张图片

<如果出现了警告,诸如:log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging)>

解决方法:在src目录下新建一个log4j.properties,内容为:

# Set root category priority to INFO and its only appender to CONSOLE.
log4j.rootCategory=INFO, CONSOLE, LOGFILE

#log4j.rootCategory=INFO, CONSOLE, 

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, LOGFILE 

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=INFO
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy:MM:dd HH:mm:ss:SSS} %-5p [%c{1}] %m%n

# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOGFILE.File=c\:konbao.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.Threshold=INFO
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{yyyy:MM:dd HH:mm:ss:SSS} [%24F:%-4L:%-5p]%x %m%n


三、各个配置文件之间的关系,大致如下~~~

mybatis学习笔记(1):搭建开发环境,以及mybatis各个配置文件之间的关系_第5张图片


以上内容为本人在学习mybatis时整理的笔记,个人理解的结果,如有问题,欢迎朋友们指正。

你可能感兴趣的:(mybatis)