Java Mybatis学习

简介(官网)

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

mybatis框架需要的jar包,mybatis-XXX.jar包和数据库驱动jar包,如Oracle数据库则需要ojdbc.jar、mysql数据库则需要mysql-connector-XX.jar包。

 

图1文件结构

如图1所示,Mybatis包括Java数据库实体类文件、java dao文件、xml配置文件、xml映射文件4大类文件。

其相互直接的关系如图2所示:

图2关键文件关系

以下是程序代码

配置xml文件   MyBatis-Configuration.xml:

*******************************************************************************************

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
  "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>

<!--数据库配置文件的声明-->
    <properties resource="mysqldb.properties">
    <property name="dbuser" value="test" />
        <property name="dbpass" value="test" />
        </properties>
        

<!--简写声明,声明后User与org.happymzw.pojo.User等价-->
        <typeAliases>
        <typeAlias alias="User" type="org.happymzw.pojo.User" />
        </typeAliases>


    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${db.driver}" />
                <property name="url" value="${db.url}" />
                <property name="username" value="${db.username}" />
                <property name="password" value="${db.password}" />
            </dataSource>
        </environment>
    </environments>


    <mappers>
        <mapper resource="org/happymv/mapper/UserMapper.xml"/>
    </mappers>
    </configuration>

*************************************************************************************

 

映射xml文件      UserMapper.java

*************************************************************************************

<?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="org.happymzw.dao.UserDao"><!--映射接口->

    <insert id="insert" parameterType="User">
      <![CDATA[insert into t_user values(#{id}, #{userName}, #{password}, #{description})]]>
    </insert>
    
    <delete id="delete" parameterType="String" >
       <![CDATA[ delete from t_user where userName=#{userName}]]>
    </delete>
    
    <update id="update" parameterType="User">
       <![CDATA[ update t_user set userName=#{userName},password=#{password},description=#{description} where id=#{id}]]>
    </update>
    
    <select id="countAll" resultType="int">
      <![CDATA[  select count(1) from t_user]]>
    </select>
    
    <select id="selectAll" resultType="User">
       <![CDATA[ select * from t_user]]>
    </select>
    
    <select id="findByUserName" parameterType="String" resultType="User">
       <![CDATA[ select * from t_user where userName=#{userName}]]>
    </select>
</mapper>

************************************************************************************

 

Java  dao文件       UserDao.java

************************************************************************************

package org.happymzw.dao;

import java.util.List;

import org.happymzw.pojo.User;


/**
 * @author victor.min
 *
 */
public interface UserDao{

    public int insert(User user);

    public int delete(String userName);

    public int update(User user);

    public List<User> selectAll();

    public int countAll();

    public User findByUserName(String userName);

}

*********************************************************************************

 

Java数据库实体类

*********************************************************************************

package org.happymzw.pojo;


/**
 * @author victor.min
 *
 */
public class User{

    private int id;
    private String userName;
    private String password;
    private String description;

    /**
     * @return the id
     */
    public int getId() {
        return id;
    }
    /**
     * @param id the id to set
     */
    public void setId(final int id) {
        this.id = id;
    }
    /**
     * @return the userName
     */
    public String getUserName() {
        return userName;
    }
    /**
     * @param userName the userName to set
     */
    public void setUserName(final String userName) {
        this.userName = userName;
    }
    /**
     * @return the password
     */
    public String getPassword() {
        return password;
    }
    /**
     * @param password the password to set
     */
    public void setPassword(final String password) {
        this.password = password;
    }
    /**
     * @return the description
     */
    public String getDescription() {
        return description;
    }
    /**
     * @param description the description to set
     */
    public void setDescription(final String description) {
        this.description = description;
    }
    /* (non-Javadoc)
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        final StringBuilder builder = new StringBuilder();
        builder.append("User [id=");
        builder.append(id);
        builder.append(", userName=");
        builder.append(userName);
        builder.append(", password=");
        builder.append(password);
        builder.append(", description=");
        builder.append(description);
        builder.append("]");
        return builder.toString();
    }
}

********************************************************************************

 

测试文件  UserDaoTest.java和TestMain.java

********************************************************************************

package org.happymzw.test;

import java.io.Reader;
import java.util.Iterator;
import java.util.List;

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.happymzw.dao.UserDao;
import org.happymzw.pojo.User;
import org.junit.Test;

/**
 * @author victor.min
 *
 */
public class UserDaoTest {
    @Test
    public void userDaoTest() throws Exception {

        final String resource = "MyBatis-Configuration.xml";
        final Reader reader = Resources.getResourceAsReader(resource);
        final SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        final SqlSessionFactory factory = builder.build(reader);

        final SqlSession session = factory.openSession();
        final UserDao userDao = session.getMapper(UserDao.class);

//        final User user = new User();
//        user.setId(7);
//        user.setUserName("happymzw2");
//        user.setPassword("123456");
//        user.setDescription("备注");
//
//        userDao.insert(user);
//        System.out.println("记录条数:"+userDao.countAll());


//        user.setDescription("Description");
//        userDao.update(user);
//        final User u1 = userDao.findByUserName("happymzw2");
//        System.out.println(u1.toString());

        userDao.delete("happymzw2");

        System.out.println("记录条数:"+userDao.countAll());
        final List<User> users = userDao.selectAll();
        final Iterator<User> iter = users.iterator();
        while(iter.hasNext()){
            final User u = iter.next();
            System.out.println("ID: " + u.getId()
                    + ", 用户名:" + u.getUserName()
                    + ", 密码:" + u.getPassword()
                    + ", 备注: " + u.getDescription());
        }

        session.commit();
        session.close();
    }
}

*******************************************************************************************

 

********************************************************************************************

package org.happymzw.test;

public class TestMain {

  public static void main(String[] args) {
    // TODO Auto-generated method stub
UserDaoTest test = new UserDaoTest();
try {
  test.userDaoTest();
}
catch (Exception e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}
  }

}

*********************************************************************************************

 

附:数据库配置文件

 

mysql数据库      mysqldb.properties 

********************************************************************************************

# db config
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/mybatis
db.username=admin
db.password=admin

*******************************************************************************************

 

Oracle数据库     oracledb.properties

*******************************************************************************************

# db config
db.driver=oracle.jdbc.driver.OracleDriver
db.url=jdbc:oracle:thin:@localhost:1521:test
db.username=admin
db.password=admin

*******************************************************************************************

 

 

 

 

 

 

posted on 2017-03-02 17:20  RunRock  阅读(184)  评论(0)    收藏  举报

导航