版本
mybatis-3.3.3.jar
下载地址:
http://code.google.com/p/mybatis/downloads/detail?name=mybatis-3.2.3.zip
依赖jar:
实践
基于配置文件(mybatis)
工程结构
定义javabean为Person
package com.mybatis.domain;
publicclass Person {
private Integer id;
private String name;
@Override
public String toString() {
returnid + "," + name;
}
public Integer getId() {
returnid;
}
publicvoid setId(Integer id) {
this.id = id;
}
public String getName() {
returnname;
}
publicvoid setName(String name) {
this.name = name;
}
@Override
publicboolean equals(Object obj) {
returnsuper.equals(obj);
}
@Override
publicint hashCode() {
returnsuper.hashCode();
}
}
| 编写Person的mapper配置文件为PersonMapper.xml
<?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.mybatis.dao.PersonMapper">
<insert id="insertPerson" parameterType="Person" flushCache="true" statementType="PREPARED">
INSERT INTO person (id,name) VALUES (#{id},#{name})
</insert>
</mapper>
| 注意:
namespace必须具有唯一性
insert 为标签名
id可以理解为被调用的方法名
paramterType参数值为Person 可以修改获取Person的完整包名和类名
<?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.mybatis.dao.PersonMapper">
<insert id="insertPerson" parameterType="com.mybatis.domain.Person" flushCache="true" statementType="PREPARED">
INSERT INTO person (id,name) VALUES (#{id},#{name})
</insert>
</mapper>
| 直接取Person为第3步mybatis-config.xml文件中定义的别名
<typeAliases>
<typeAlias alias="Person" type="com.mybatis.domain.Person" /> </typeAliases>
|
里面sql语句为标准的sql insert 语句,其中(#{id},#{name})为Person类属性名称,注意格式必须为#{xx}
编写mybatis配置文件mybatis-config.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>
<properties resource="db.properties"/>
<typeAliases>
<typeAlias alias="Person" type="com.mybatis.domain.Person" />
</typeAliases>
<environments default="default">
<environment id="default">
<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>
<mappers>
<mapper resource="com/mybatis/dao/PersonMapper.xml" />
</mappers>
</configuration>
| 注意
<properties resource="db.properties"/>
为引入第4步的数据源信息
typeAliases 为javabean 实体类起一个别名
environments 为配置数据源信息
mappers 为加载mapper配置文件
|
编写数据源配置db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=root
| 编写测试类
package com.mybatis.test;
import java.io.InputStream;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.mybatis.domain.Person;
import com.mybatis.utils.MyBatisUtils;
publicclass PersonTest {
privatestatic SqlSessionFactory factory ;
static{
//加载mybatis配置文件
InputStream in = PersonTest.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
factory = new SqlSessionFactoryBuilder().build(in);
}
publicstaticvoid main(String args[]){
//打开session
SqlSession session = factory.openSession();
Person person = new Person();
person.setName("jysemel");
//指定namespace空间名和调用的方法名
session.insert("com.mybatis.dao.PersonMapper.insertPerson", person);
//提交事务和关闭session
session.commit();
session.close();
}
}
|
|
commit事务提交
mybatis提供了SqlSessionFactory类解析数据库配置和持久类已经session的commit, SqlSessionFactory最终是通过java.sql.Connection中的commit提交,同时使用单例模式和静态单例模式创建
如何加载接口同时调用配置的实现的方法
接口名称映射
mapper.xml配置详解
1、namespace 应是接口完整的包名+接口名称,不然会报(找不到对应的实现接口)
org.apache.ibatis.binding.BindingException: Type interface com.mybatis.dao.UserMapper is not known to the MapperRegistry.
2、resultMap
mybatis-config.xml配置详解
1、详细参见官网(xml映射配置文件)
2、实例参见mybatis-one工程,数据源的连接配置
工程结构
3、
缓存的配置
java注解
简单的sql语句建议使用、复杂的建议通过配置文件编写
和spring集成
打印出sql语句
配置log4j文件,配置如下(注意rootLogger对应的值为debug)
log4j.rootLogger=debug,stdout,R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[service]%d-%c-%-4r[%t]%-5p%c%x-%m%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=../logs/service.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[service]%d-%c-%-4r[%t]%-5p%c%x-%m%n
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,R
log4j.logger.java.sql.ResultSet =debug
总结
1、 搭建java工程
2、 参考MyBatis-3-User-Guide-Simplified-Chinese文档
参考文档
http://blog.csdn.net/huzheaccp/article/details/7399124 |