本人是初次接触mybatis,分享一下实战的经验:
首先我在网上找到并且下载了mybatis3.4.6的jar包
下载地址
提取码:uyar
工具 mysql5.6,MyEclipse10.
我将mybatis3.4.6.jar和lib里的12个依赖包以及连接mysql的jar包全部复制并构建路径到如图所示的目录里:
在所有的jar包都复制进去并且显示正常后我开始配置log4j日志文件
###setting###
log4j.rootLogger = debug,stdout,D,E
###direct log messages to stdout###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### direct debug messages to E://logs/log.log###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = E://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### direct error messages to E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E\://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
这是我的配置文件内容,主要是将debug和error的日志文件输出到控制台并且在e盘logs文件夹下生成debug.log和error.log日志文件。
接下来我建立了一个数据库并且建立了例表,如图:
sql语句也是例子可以做个参考:
create table customer(
id int primary key auto_increment,
name varchar(20),
gender char(10),
tel varchar(20),
address varchar(50)
);
在建立完数据库和表的一系列操作后就可以写实体类了,写有关表中信息的数据:
package com.ssm.doamin;
public class Customer {
private Integer id;
private String name;
private String gender;
private String tel;
private String address;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
这一步完成之后我们需要建立SQL映射文件,在这个文件里主要是mapper映射请求。insert部分可以替换为update等其他的sql语句,但是标签也要做替换。
<?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">
<!-- 编写dao接口的方法 -->
<mapper namespace="com.ssm.dao.CustomerMapper">
<!-- 添加客户 -->
<insert id="saveCustomer" parameterType="com.ssm.doamin.Customer">
INSERT INTO user.customer
(
name,
gender,
tel,
address
)
VALUES
(
#{name},
#{gender},
#{tel},
#{address}
)
</insert>
</mapper>
完成这一步后,写一个接口,因为是入门,所以我只写了一个添加的功能接口。
import com.ssm.doamin.Customer;
public interface CustomerMapper {
//添加客户
public void saveCustomer(Customer customer);
}
这段其实是一个dao层。
写完接口我们要连接数据库,我这里用的mysql,所以我们还需要写一个连接数据库用的Sqlmapconfig.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>
<!-- 单独使用mybatis时的环境变量 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理 -->
<transactionManager type="JDBC" />
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://localhost:3306/user?characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="123123" />
</dataSource>
</environment>
</environments>
<!-- 查找SQL映射文件 -->
<mappers>
<mapper resource="mapper/CustomerMapper.xml" />
</mappers>
</configuration>
最后这一块mapper很重要,这一块就是寻找映射文件已达成映射作用。
到这里所有的配置文件和连接dao层都已经写完了,接下来我将写最后的测试类看是否成功。
package com.ssm.test;
import java.io.IOException;
import java.io.InputStream;
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 com.ssm.dao.CustomerMapper;
import com.ssm.doamin.Customer;
public class MybatisTest {
@Test
public void test() throws IOException{
//创建sqlsessionFactoryBuilder
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//加载sqlMapConfig.xml文件
InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
//创建sqlsessionFactory
SqlSessionFactory factroy =builder.build(in);
//打开sqlsession
SqlSession sqlSession = factroy.openSession();
//获取Mapper接口的对象
CustomerMapper customerMapper = sqlSession.getMapper(CustomerMapper.class);
//操作
Customer customer = new Customer();
customer.setName("校长");
customer.setGender("man");
customer.setTel("1031-8888888");
customer.setAddress("**********");
customerMapper.saveCustomer(customer);
//提交事务
sqlSession.commit();
//关闭资源
sqlSession.close();
}
}
最后总结了一下,我发现mybatis的实现是一个洋葱型的形式,首先要实现SqlSessionFactoryBuilder,然后根据SqlSessionFactoryBuilder实现SqlSessionFactory,然后实现SqlSession,最后写出操作,提交事务等等。其实也不算太难。以上经验希望初入mybatis的哥们儿可以用的上。