Mybatis 学习 - 第一个 mybatis 项目

本贴最后更新于 2082 天前,其中的信息可能已经物是人非

数据库准备

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


  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    170 引用 • 414 回帖 • 430 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...