版本
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