以上篇文章中的MyBatis_Demo模块为例。
一、核心配置文件名:application.xml
MyBatis核心配置中的标签必须按照指定位置:
properties、settings、typeAliases、typeHandlers、objectFactory、objectWrapperFactory、reflectorFactory、plugins、environments、databaseIdProvider、mappers。
1.
引入properties文件,此时application.xml就可以${属性名}的方式访问属性值
在src/main/resources目录下,创建文件jdbc.properties
jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/ssm?characterEncoding=UTF-8
jdbc.username = root
jdbc.password = password
在application.xml文件中就可以引入properties文件,并对application.xml文件可以做进一步修改
2.
3.
typeAlias:设置某个具体的类型的别名
属性:
type:需要设置别名的类型的全类名
alias:设置此类型的别名,若不设置此属性,该类型拥有默认的别名,即类名且不区分大小写,若设置此属性,此时该类型的别名只能使用alias所设置的值
4.
environments:设置多个连接数据库的环境
属性:
default:设置默认使用的环境的id
environment:设置具体的连接数据库的环境信息
属性:
id:设置环境的唯一标识,可通过environments标签中的default设置某一个环境的id, 表示默认使用的环境。
5.
二、项目补充
1. 工具类Until
在测试程序中,每个测试模块之间存在大量的相同重复代码,每个测试模块都要创建工厂类和会话,这个时候就可以将相同代码提取出来生成一个工具类,每次使用的时候调用这个类,就可以减少代码量提升工作效率。
在src/main/java目录下,创建com.wsl.mybatis.utils.SqlSessionUtil.java文件
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 java.io.IOException;
import java.io.InputStream;public class SqlSessionUtil {public static SqlSession getSqlSession() {SqlSession sqlSession = null;try {// 获取核心配置文件的输入流InputStream is = Resources.getResourceAsStream("application.xml");// 获取SqlSessionFactoryBuilderSqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();// 获取sqlSessionFactoryBuilder对象SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);// 获取SqlSession对象sqlSession = sqlSessionFactory.openSession(true);} catch (IOException e) {e.printStackTrace();}return sqlSession;}
}
有这个工具类后,测试代码就可以修改为:
import com.wsl.mybatis.mapper.UserMapper;
import com.wsl.mybatis.pojo.User;
import com.wsl.mybatis.utils.SqlSessionUtil;
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.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;public class MyBatisTest {// 增加一列@Testpublic void testInsert() throws IOException {SqlSession sqlSession = SqlSessionUtil.getSqlSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);int result = userMapper.insertUser();System.out.println("结果是:"+result);sqlSession.close();}// 修改@Testpublic void TestUpdate(){SqlSession sqlSession = SqlSessionUtil.getSqlSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);mapper.updateUser();sqlSession.close();}// 删除@Testpublic void TestDel(){SqlSession sqlSession = SqlSessionUtil.getSqlSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);mapper.delUser();sqlSession.close();}// 查询@Testpublic void TestSelect(){SqlSession sqlSession = SqlSessionUtil.getSqlSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);User user = mapper.getUserById();System.out.println(user);sqlSession.close();}// 查询@Testpublic void TestGetAllUsers(){SqlSession sqlSession = SqlSessionUtil.getSqlSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);List users = mapper.getAllUser();// 循环输出List里面的内容users.forEach(System.out::println);sqlSession.close();}}
2. 加入log4j日志文件
日志的级别:
FATAL(致命)>ERROR(错误)>WARN(警告)>INFO(信息)>DEBUG(调试)
从左到右打印的内容越来越详细
log4j的配置文件名为log4j.xml,存放的位置是src/main/resources目录