创建Maven项目
首先在中创建一个基本的Maven项目,按照如下步骤进行操作即可 1、在中打开【File】–>【New】选择【other】(或者使用快捷键 Ctrl + N)打开新建项目向导
2、选择【Maven】下的【Maven 】,点击【Next】
3、选中【 a (skip )】的复选框,点击【Next】 4、输入Group Id, Id,其他按照默认填写,然后点击【】
完成以上操作之后,等待片刻,就可以得到一个基于Maven的基本结构了,得到的Maven项目的目录结构如下所示:
5、打开Maven项目的配置文件pom.xml,添加和mysql的依赖
org.mybatis
mybatis
3.3.0
mysql
mysql-connector-java
5.1.35
我们可以通过以下链接查找我们需要的Mavne依赖包
我们还需要添加Log4j、JUnit的驱动依赖。最后我们得到的pom.xml文件的内容如下:
4.0.0
mybatis
alex
0.0.1-SNAPSHOT
UTF-8
junit
junit
4.12
test
org.mybatis
mybatis
3.3.0
mysql
mysql-connector-java
5.1.35
org.slf4j
slf4j-api
1.7.12
org.slf4j
slf4j-log4j12
1.7.12
log4j
log4j
1.2.17
org.apache.maven.plugins
maven-compiler-plugin
2.3.2
1.8
1.8
当对Maven的配置进行修改后,我们还需要在项目上单击鼠标右键,在【Maven】中选择【 …】(或者直接在项目中,使用Alt + F 快捷键)来更新外部依赖包。
让跑起来
1、准备数据库 首先创建一个数据库,编码方式设置为UTF-8,通过执行下面的SQL语句创建一个名为的数据库。
CREATE DATABASE mybatis DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
然后再创建一个名为的表,并插入一些数据。
use mybatis;
CREATE TABLE Country(
id int(15) NOT NULL AUTO_INCREMENT,
countryname varchar(255) NOT NULL,
countrycode varchar(255) NOT NULL,
PRIMARY KEY(id)
);
insert INTO country(countryname,countrycode)values('中国','CN'),('美国','US'),('英国','GB'),('法国','FR');
2、配置 配置有多种方式,在此我们首先使用的最基础的XML形式进行配置。使用XML形式进行配置,首先在src/main/下面创建-.xml配置文件,然后输入如下内容
配置说明:
中的属性配置指定使用LOG4J输出日志。
元素下面配置了一个包的别名。通常确定一个类的时候需要使用类的全限定名称,例如..model.,在中需要频繁的使用类的权限定名称,为了方便使用,我们配置了..model包,这样配置以后,我们再使用该包下的类的时候就不用再写上包名了,直接使用类名接口,如 。
环境配置中主要配置了数据库连接。 的类型可以配置成其内置类型之一,如、、JNDI.
如果将类型设置为,会为每一个数据库操作创建一个新的连接,并关闭它。该方式适用于只有小规模数据并发用户的简单应用程序上。 如果将属性设置为,会创建一个数据库连接池,连接池中的一个连接将会被用作数据库操作。一旦数据库操作完成,会将此连接返回给连接池。在开发测试环境中,经常使用该种方式。 如果将类型设置为JNDI,从在应用服务器向配置好的JNDI数据源获取连接。在生产环境中优先考虑这种方式。
中配置了一个包含完整路径的.xml(.xml)文件,这是一个的SQL语句和映射配置文件。
3、创建实体类和.xml文件 是一个结果映射框架,这里创建的实体类实际上是一个数据值对象(Data Value ),在实际应用中一般会对应一个实体,用于、、、操作。
关于的命名方式:在中,根据官方的习惯,一般用作为XML和接口类名的后缀。(.xml)
在src/main/java下面创建一个基础的包..model,根据数据库表表,创建实体类
package mybatis.simple.model;
public class Country {
private Long id;
private String countryname;
private String countrycode;
public Country() {
super();
}
public Country(Long id, String countryname, String countrycode) {
super();
this.id = id;
this.countryname = countryname;
this.countrycode = 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;
}
@Override
public String toString() {
return "Country [id=" + id + ", countryname=" + countryname + ", countrycode=" + countrycode + "]";
}
}
然后在src/main/(也可以是src/main/java)下创建//目录,再在该目录下创建.xml文件
select * from country
SQL定义在.xml文件中,里面的配置如下:
:XML的根元素,属性定义了当前XML的命名空间
:我们所定义的查询。还有、、等标签 id属性:定义当前语句的唯一id,调用SQL语句时,通过id区别
:定义当前SQL语句的返回值类型。此处就是指实体类,前面配置中提到的别名主要用于这里,如果没有配置,此处就需要写成 =”..model.”
4、配置Log4j 配置Log4j,以便查看操作数据库的过程 在src/main/中添加log4j.配置文件
#全局配置
log4j.rootLogger=DEBUG, stdout
#mybatis日志配置
log4j.logger.mybatis.simple.mapper=TRACE
#控制台输出配置
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
如果用过Log4j日志组件的人应该知道,配置中log4j….对应的是..包,但是在此实例中,Java目录下并没有这个包名,只在资源目录下有目录。
的日志实现中,所谓的包名实际上就是XML配置中的属性值的一部分。(后面介绍接口相关部分时,由于属性值必须和接口的权限定类名相同,因此才会真正对应到java包。当使用纯注解方式时,使用的就是纯粹的包名。)
日志的最低级别是TRACE,在这个日志级别下,会输出执行SQL过程中的详细信息。
5、编写测试代码 首先在src/test/java中创建//test包,然后创建测试类
package mybatis.simple.test;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
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.junit.BeforeClass;
import org.junit.Test;
import mybatis.simple.model.Country;
public class CountryMapperTest {
private static SqlSessionFactory sessionFactory;
@BeforeClass
public static void init(){
try{
//通过配置文件获取连接数据库连接信息
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
//通过配置信息来构建一个SqlSessionFactory
sessionFactory = new SqlSessionFactoryBuilder().build(reader);
}catch(IOException e){
e.printStackTrace();
}
}
@Test
public void test(){
//通过SqlSessionFactory打开一个会话
SqlSession openSession = sessionFactory.openSession();
try{
List countryList = openSession.selectList("selectAll");
printCountryList(countryList);
}finally{
//关闭session会话
openSession.close();
}
}
private void printCountryList(List countryList){
for(Country country : countryList){
System.out.println(country.getId()+"--"+country.getCountryname()+"--"+country.getCountrycode());
}
}
}
说明:
通过工具类将-.xml配置文件读入。
再通过lder建造类使用创建工厂对象。在创建对象的过程中,首先解析-.xml配置文件,读取配置文件中配置后会读取全部的.xml进行具体方法的解析,在这些解析完成后,就会包含了所有的属性配置和执行SQL的信息
使用时通过工厂对象获取一个。
通过的方法查询到.xml中id=””的方法,执行SQL查询。
底层使用JDBC执行SQL,获取查询结果集后,根据的配置将结果集映射为类型的集合,返回查询结果,这样就得到了最后的,并将结果输出到控制台
最后一定不要忘记关闭,否则会因为连接没有关闭导致数据库连接数过多,而造成系统崩溃。
6、进入测试类,右键选择【Run as】–> 【1 JUnit Test】
我们将会在控制台看到如下输出结果
DEBUG [main] - Opening JDBC Connection
DEBUG [main] - Created connection 399931359.
DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@17d677df]
DEBUG [main] - ==> Preparing: select * from country
DEBUG [main] - ==> Parameters:
TRACE [main] - <== Columns: id, countryname, countrycode
TRACE [main] - <== Row: 1, 中国, CN
TRACE [main] - <== Row: 2, 美国, US
TRACE [main] - <== Row: 3, 英国, GB
TRACE [main] - <== Row: 4, 法国, FR
DEBUG [main] - <== Total: 4
1--中国--CN
2--美国--US
3--英国--GB
4--法国--FR
DEBUG [main] - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@17d677df]
DEBUG [main] - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@17d677df]
DEBUG [main] - Returned connection 399931359 to pool.
从日志中我们可以看到完整的SQL输出和结果输出,从日志对应的级别可以发现SQL、参数、结果数都是DEBUG级别,具体的查询结果列和数据都是TRACE级别。
项目源码下载地址:
———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,永久会员只需109元,全站资源免费下载 点击查看详情
站 长 微 信: nanadh666