mybatis基于配置示例

 

版本

 

mybatis-3.3.3.jar

 

下载地址:

 

http://code.google.com/p/mybatis/downloads/detail?name=mybatis-3.2.3.zip

 

依赖jar

 

 

 

实践

 

基于配置文件(mybatis

 

工程结构

 

 

 

定义javabeanPerson

 

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();

    }

}

 

编写Personmapper配置文件为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为第3mybatis-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类解析数据库配置和持久类已经sessioncommit, SqlSessionFactory最终是通过java.sql.Connection中的commit提交,同时使用单例模式和静态单例模式创建

 

 

 

 

 

如何加载接口同时调用配置的实现的方法

 

接口名称映射

 

mapper.xml配置详解

 

1namespace 应是接口完整的包名+接口名称,不然会报(找不到对应的实现接口)

 

         org.apache.ibatis.binding.BindingException: Type interface com.mybatis.dao.UserMapper is not known to the MapperRegistry.

 

2resultMap

 

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值