一、引入MyBatis及其相关jar包
1、mybatis-3.2.2.jar:mybatis的jar包
2、mysql-connector-java-5.1.0-bin.jar:MySQL数据库jar包
3、log4j-1.2.16.jar:日志、用于开发显示提示信息如执行的SQL语句及参数
二、新建mybatis-config.xml配置文件
1、在项目下新建一个源码文件夹resources,在里面新建一个xml取名为mybatis-config.xml
2、mybatis-config.xml表头信息如下:
三、在mybatis-config.xml中配置数据库相关信息
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<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>
configuration>
四、创建数据库properties文件
1、在resources源码文件夹下新建一个properties文件,这里我取名叫jdbc.properties,然后再里面写入数据库连接相关信息。
2、然后在mybatis-config.xml文件内配置jdbc.properties文件路径
五、配置Log4j,让控制台输出SQL语句及参数相关信息
1、在resources文件夹下新建log4j.properties文件
2、log4j.properties参考内容
log4j.rootLogger=DEBUG,CONSOLE,file
#log4j.rootLogger=ERROR,ROLLING_FILE
log4j.logger.cn.jbit.dao=debug
log4j.logger.com.ibatis=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug
log4j.logger.java.sql.ResultSet=debug
log4j.logger.org.tuckey.web.filters.urlrewrite.UrlRewriteFilter=debug
######################################################################################
# Console Appender \u65e5\u5fd7\u5728\u63a7\u5236\u8f93\u51fa\u914d\u7f6e
######################################################################################
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=error
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern= [%p] %d %c - %m%n
######################################################################################
# DailyRolling File \u6bcf\u5929\u4ea7\u751f\u4e00\u4e2a\u65e5\u5fd7\u6587\u4ef6\uff0c\u6587\u4ef6\u540d\u683c\u5f0f:log2009-09-11
######################################################################################
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern=yyyy-MM-dd
log4j.appender.file.File=log.log
log4j.appender.file.Append=true
log4j.appender.file.Threshold=error
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n
log4j.logger.com.opensymphony.xwork2=error
3、在mybatis-config.xml配置文件内添加如下配置
<settings>
<setting name="logImpl" value="LOG4J"/>
settings>
六、测试
1、在数据库中新建表emp
2、创建表对应的实体类
3、新建EmpMapper.xml文件
4、EmpMapper.xml表头信息如下:
5、编写EmpMapper.xml文件
<mapper namespace="com.bc.dao.EmpMapper">
<insert id="addEmp" parameterType="com.bc.pojo.Emp">
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno)
values(#{empno},#{ename},#{job},#{mgr},#{hiredate},#{sal},#{comm},#{deptno})
insert>
<update id="updateEmp" parameterType="com.bc.pojo.Emp">
update emp set ename=#{ename},job=#{job},mgr=#{mgr},hiredate=#{hiredate},sal=#{sal},
comm=#{comm},deptno=#{deptno}
where empno=#{empno}
update>
<select id="getEmpList" resultType="com.bc.pojo.Emp">
select * from Emp
select>
<delete id="deleteEmp" parameterType="com.bc.pojo.Emp">
delete from Emp where empno=#{empno}
delete>
mapper>
6、在mybatis-config.xml中引入EmpMapper.xml(不要忘记)
<mappers>
<mapper resource="com/bc/dao/EmpMapper.xml"/>
mappers>
7、测试代码
public class EmpTest {
private Logger logger = Logger.getLogger(EmpTest.class);
@Test
/**添加Emp测试*/
public void addEmpTest() {
//mybatis-config.xml文件路径
String resource = "mybatis-config.xml";
SqlSession sqlSession = null;
//要插入的Emp对象
Emp emp = new Emp();
emp.setEname("测试");
emp.setDeptno(1);
try {
//1 读取配置文件(mybatis-config.xml)的输入流
InputStream is = Resources.getResourceAsStream(resource);
//2 创建sqlSessionFactory对象,完成对配置文件的读取
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//3 创建sqlSession
sqlSession = factory.openSession();
//4 调用mapper文件进行数据操作(调用之前必须要把mapper文件加入到mybatis-config.xml)
sqlSession.insert("com.bc.dao.EmpMapper.addEmp", emp);
//5 提交事务
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
//出现异常回滚事务
sqlSession.rollback();
} finally {
//关闭会话
sqlSession.close();
}
}
/**更新Emp测试*/
public void updateEmpTest() {
//mybatis-config.xml文件路径
String resource = "mybatis-config.xml";
SqlSession sqlSession = null;
//要更新的Emp对象
Emp emp = new Emp();
emp.setEmpno(65);
emp.setEname("更新测试");
try {
//1 读取配置文件(mybatis-config.xml)的输入流
InputStream is = Resources.getResourceAsStream(resource);
//2 创建sqlSessionFactory对象,完成对配置文件的读取
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//3 创建sqlSession
sqlSession = factory.openSession();
//4 调用mapper文件进行数据操作(调用之前必须要把mapper文件加入到mybatis-config.xml)
sqlSession.update("com.bc.dao.EmpMapper.updateEmp", emp);
//5 提交事务
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
//出现异常回滚事务
sqlSession.rollback();
} finally {
//关闭会话
sqlSession.close();
}
}
/**查询Emp测试*/
public void getEmpListTest() {
//mybatis-config.xml文件路径
String resource = "mybatis-config.xml";
SqlSession sqlSession = null;
//查询结果集
List empList = new ArrayList<>();
try {
//1 读取配置文件(mybatis-config.xml)的输入流
InputStream is = Resources.getResourceAsStream(resource);
//2 创建sqlSessionFactory对象,完成对配置文件的读取
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//3 创建sqlSession
sqlSession = factory.openSession();
//4 调用mapper文件进行数据操作(调用之前必须要把mapper文件加入到mybatis-config.xml)
empList = sqlSession.selectList("com.bc.dao.EmpMapper.getEmpList");
} catch (Exception e) {
e.printStackTrace();
} finally {
//关闭会话
sqlSession.close();
}
//遍历数据
for (Emp emp : empList) {
logger.debug(emp.getEname());
}
}
/**删除Emp测试*/
public void deleteEmpTest() {
//mybatis-config.xml文件路径
String resource = "mybatis-config.xml";
SqlSession sqlSession = null;
//要删除的Emp对象
Emp emp = new Emp();
emp.setEmpno(65);
try {
//1 读取配置文件(mybatis-config.xml)的输入流
InputStream is = Resources.getResourceAsStream(resource);
//2 创建sqlSessionFactory对象,完成对配置文件的读取
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//3 创建sqlSession
sqlSession = factory.openSession();
//4 调用mapper文件进行数据操作(调用之前必须要把mapper文件加入到mybatis-config.xml)
sqlSession.delete("com.bc.dao.EmpMapper.deleteEmp", emp);
//5 提交事务
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
//出现异常回滚事务
sqlSession.rollback();
} finally {
//关闭会话
sqlSession.close();
}
}
}
8、执行结果(以插入为例)
七、总结
从以上代码可以看出,有很多臃肿的地方,比如类名使用完全包名+类名可以使用别名优化,测试代码很多重复性的代码可以提取出来等,这些问题参考下一篇博客
下一篇:MyBatis-搭建MyBatis开发环境二(MyEclipse版)