孤独750 发表于 2016-11-24 08:27:34

mybatis基于配置示例

版本
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=%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=%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
页: [1]
查看完整版本: mybatis基于配置示例