我在北纬36度
Mybatis学习-第一个mybatis项目.md

数据库准备

1.创建mybatis数据库 create database mybatis default character set utf8 collate utf8_general_ci; 2.创建一个名字为country的表并插入一些简单的数据 ``` sql DROP TABLE IF EXISTS country; CREATE TABLE country ( id int(11) NOT NULL AUTO_INCREMENT, countryname varchar(255) DEFAULT NULL, countrycode varchar(255) DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

INSERT INTO country VALUES ('1', '中国', 'CN'); INSERT INTO country VALUES ('2', '英国', 'GB'); INSERT INTO country VALUES ('3', '美国', 'US'); INSERT INTO country VALUES ('4', '俄罗斯', 'RU');

创建实体类

package tk.mybatis.simple.model;

public class Country {
	private Long id;
	private String countryname;
	private String countrycode;
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getCountryname() {
		return countryname;
	}
	public void setCountryname(String countryname) {
		this.countryname = countryname;
	}
	public String getCountrycode() {
		return countrycode;
	}
	public void setCountrycode(String countrycode) {
		this.countrycode = countrycode;
	}
}

创建映射文件

<?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="tk.mybatis.simple.mapper.CountryMapper">
	<select id="selectAll" resultType="Country">
		select id,countryname,countrycode from country
	</select>
</mapper>

创建mybatis配置文件

/simple/src/main/resources/mybatis-config.xml

``` 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>
	<settings>
		<setting name="logImpl" value="LOG4J"/>
	</settings>
	<typeAliases>
		<package name="tk.mybatis.simple.model"/>
	</typeAliases>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC">
				<property name="" value=""/>
			</transactionManager>
			<dataSource type="UNPOOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql:///mybatis"/>
				<property name="username" value="t"/>
				<property name="password" value=""/>
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="tk/mybatis/simple/mapper/CountryMapper.xml"/>
	</mappers>
</configuration>

创建测试文件

package tk.mybatis.simple.mapper;

import java.awt.List;
import java.io.IOException;
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 org.apache.log4j.lf5.util.Resource;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;

import tk.mybatis.simple.model.Country;

public class CountryMapperTest {
  private static SqlSessionFactory sqlSessionFactory;
  @BeforeClass
  public static void init(){
	  try {
		Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
		reader.close();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	  
  }
  @Test
  public void testSelectAll(){
	  SqlSession sqlSession = sqlSessionFactory.openSession();
	  try{
		  
		  java.util.List<Country> countryList = sqlSession.selectList("selectAll");
		  printCountryList(countryList);
	  }finally {
		 sqlSession.close();
	}
  }
  private void printCountryList(java.util.List<Country> countryList){
	  for (Country country : countryList) {
		  System.out.printf("%-4d%4s%4s\n",
				  country.getId(),country.getCountryname(),country.getCountrycode());
		
	}
  }
}

log4j文件

#all config
log4j.rootLogger=ERROR,stdout
#MYbatis log config
log4j.logger.tk.mybatis.simple.mapper=TRACE
#control input content
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>tk.mybatis</groupId>
  <artifactId>simple</artifactId>
  <version>0.0.1-SNAPSHOT</version>
 
  <properties>
      <!-- 设置源代码编码模式为UTF-8 -->
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 
   </properties>
   <dependencies>
   	<dependency>
   		<groupId>org.mybatis</groupId>
   		<artifactId>mybatis</artifactId>
   		<version>3.3.0</version>
   	</dependency>
   	<dependency>
   		<groupId>junit</groupId>
   		<artifactId>junit</artifactId>
   		<version>4.12</version>
   		<scope>test</scope>
   	</dependency>
   	<dependency>
   		<groupId>mysql</groupId>
   		<artifactId>mysql-connector-java</artifactId>
   		<version>5.1.38</version>
   	</dependency>
   	<dependency>
   		<groupId>org.slf4j</groupId>
   		<artifactId>slf4j-api</artifactId>
   		<version>1.7.12</version>
   		<scope>test</scope>
   	</dependency>
   	<dependency>
   		<groupId>log4j</groupId>
   		<artifactId>log4j</artifactId>
   		<version>1.2.17</version>
   	</dependency>
   </dependencies>
</project>

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Mon Jul 16 22:57:56 CST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification. DEBUG [main] - ==> Preparing: select id,countryname,countrycode from country DEBUG [main] - ==> Parameters: TRACE [main] - <== Columns: id, countryname, countrycode TRACE [main] - <== Row: 1, 中国, CN TRACE [main] - <== Row: 2, 英国, GB TRACE [main] - <== Row: 3, 美国, US TRACE [main] - <== Row: 4, 俄罗斯, RU DEBUG [main] - <== Total: 4 1 中国 CN 2 英国 GB 3 美国 US 4 俄罗斯 RU