在上面一篇文章已经介绍了IDEA简单搭建Mybatis,这篇文章运用上一篇的基本流程,在这里不在详细表述。
1.

设置项目的编译环境是 用
,以及采用
编码

这里的依赖配置多了个日志记录,简单项目直接使用Log4j即可,Slf4j和Log4j关系 是:Slf4j相当于JAVA里面的
2.
新建数据库表如 country
创建数据库表对应的JAVA 实体
创建数据库表操作如增删改查的 动作实现
配置数据库增删改查 操作日志

实体代码
public class Country {
//省略GETTER 和SETTER 方法
private String id;
private String countryname;
private String 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="com.luban.model.Country">
<select id="selectAll" resultType="Country">
select * from country
</select>
</mapper>
namespace 需要和下面日志配置的 log4j.logger.
=TRACE 红色部分保持一直,(当然也可以随便取其他值作为命名空间,但要保持一致,不然打印不出日志)
日志登记
#全局配置
log4j.rootLogger=ERROR,stdout
#MyBatis 日志配置
log4j.logger.com.luban.model.Country=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
配置文件相比《IDEA搭建Mybatis》多了个日志配置
<?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="mysql.properties"></properties>
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<typeAliases>
<package name="com.luban.model"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<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>
</environments>
<mappers>
<mapper resource="mapper/CountryMapper.xml"/>
</mappers>
</configuration>
在这里
说三个地方
-
上篇文章提到mybatis-config.xml 标签字段属性的 顺序问题,经过参考其他文章总结顺序如下
1.properties
2.settings
3.typeAliases
4.typeHandlers
5.objectFactory
6.objectWrapperFactory
7.plugins
8.environments
9.databaseIdProvider
10.mappers -
设置日志字段,其中logImpl 是配置固有字段,这其中值包括(
)
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
-
typeAliases 中配置了一个包的别名,通常一个类要使用全限定名称,配置了包以后就不用每次重复写包,直接写Country, resultType 即可识别到Country,就是
<typeAliases>
<package name="com.luban.model"/>
</typeAliases>
<mapper namespace="com.luban.model.Country">
<select id="selectAll" resultType="Country">
select * from country
</select>
</mapper>
3.
package com.luban;
import com.luban.model.Country;
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 java.io.IOException;
import java.io.Reader;
import java.util.List;
/**
* Hello world!
*
*/
public class App
{
private static SqlSessionFactory sqlSessionFactory;
@BeforeClass
public static void init() throws IOException {
Reader reader= Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory =new SqlSessionFactoryBuilder().build(reader);
reader.close();
}
@Test
public void test(){
SqlSession sqlSession=sqlSessionFactory.openSession();
try {
List<Country> countryList = sqlSession.selectList("selectAll");
Myprint(countryList);
} finally {
sqlSession.close();
}
}
private void Myprint(List<Country> countryList){
for (Country country:countryList) {
System.out.printf("%s %s %s\n",country.getId(),country.getCountrycode(),country.getCountryname());
}
}
}
项目目录结构

程序运行结果

网友评论