码迷,mamicode.com
首页 > 其他好文 > 详细

mybatis学习笔记-1

时间:2014-10-17 17:03:34      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:style   http   io   os   ar   使用   java   sp   文件   

mybatis是一个ORM框架,因为activiti使用了mybatis,所以学习下;

mybatis单独运行可以不依靠任何框架,也不需要tomcat;

一,步骤概要:

1,手动创建数据库表,创建一个USER表;

2,创建核心配置文件configuration.xml;

3,创建POJO实体文件:user.java;

4,创建DAO:接口usermapper.java,接口实现usermapper.xml;

5,创建测试类;

二,具体步骤:

总览项目文件目录:

bubuko.com,布布扣

1,创建USER表(使用H2数据库,嵌入式数据库,便于测试);

//创建USER表
CREATE TABLE USER (
 ID INT IDENTITY ( 1,1 ) PRIMARY KEY , 
USERNAME VARCHAR ( 10 ) ) ;
//插入初始用户
INSERT INTO USER(USERNAME ) VALUES ( ‘用户一‘);
INSERT INTO USER(USERNAME ) VALUES ( ‘用户二‘);
INSERT INTO USER(USERNAME ) VALUES ( ‘用户三‘);

A,连接H2数据库,JAR包已经包含驱动:

bubuko.com,布布扣

B,创建出来的USER表:

bubuko.com,布布扣

2,configuration.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>  
        <!--给实体类起一个别名 user ,别名便于在映射文件中代替全路径名,简化书写-->  
        <typeAlias type="test.java.pojo.User" alias="User" />  
    </typeAliases>  
    <!--数据源配置  这块用 H2数据库 连接信息在db.properties-->  
    <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>  
        <!--userMapper.xml装载进来  同等于把“dao”的实现装载进来 -->  
        <mapper resource="test/java/dao/UserMapper.xml" />  
    </mappers>  
</configuration>

3,创建user.java:

package test.java.pojo;
public class User {
        private int id;
	private String username;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
}

4,创建DAO(增删改查)以及DAO实现

DAO接口:增删改查的接口,贯彻面向接口编程的思想,resultMap是与数据库字段对应的结果映射,可以简便查询结果取值

package test.java.dao;
import java.util.List;
public interface UserMapper {
	//普通的增删该查
	public User findById(int id);
	public User findByName(String username);
	public List<User> findAll();
	public int insert(User user);
	public int delete(String userName);
	public int update(User user);
	public int countAll();
}

DAO实现:mybatis实现方法,在XML输入SQL语句

<?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">  
    <!--这块等于dao接口的实现  namespace必须和接口的类路径一样-->  
<mapper namespace="test.java.dao.UserMapper">  
    <!-- findById必须和接口中的方法名一样  返回一个User  就是刚才的别名  如果不弄别名要连类路径一起写 麻烦-->  
    <select id="findById" parameterType="HashMap" resultType="User">  
        select  * from user where id=#{id}  
    </select>  
    
     <select id="findByName" parameterType="String" resultType="User">  
        select  * from user where username=#{username}  
    </select> 
    
    <select id="findAll"  resultMap="userResultMap">  
        select * from user   
    </select>  
    
    <resultMap type="User" id="userResultMap" >
	    <id property="id" column="id"/>
	    <result property="username" column="username"/>
    </resultMap>
    
    <insert id="insert" parameterType="User">
        INSERT INTO USER VALUES (#{id}, #{username})
    </insert>
    
    <delete id="delete" parameterType="String" >
        delete from user where userName like #{username}
    </delete>
    
    <update id="update" parameterType="User">
        update user set userName=#{username} where id=#{id}
    </update>
    
    <select id="countAll" resultType="int">
        select count(1) from user
    </select>
</mapper>

5,测试类

package test.java.mytest;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.ibatis.annotations.ResultMap;
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 test.java.dao.UserMapper;
import test.java.pojo.User;

public class MybatisTest {

    public static void main(String[] args) {		
	SqlSession sqlSession = getSessionFactory().openSession();  
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);  
        System.out.println(userMapper.countAll());
        User user=new User();
        user.setId(2);
        user.setUsername("文字7");
//        userMapper.insert(user);
        userMapper.update(user);
        System.out.println(userMapper.countAll());
//        System.out.println(userMapper.findByName(user.getUsername()).getId());
//        System.out.println(userMapper.findAll().get(1).getUsername());
//        List<User> user=userMapper.findAll();
//        Iterator<User> it=user.iterator();
//        while (it.hasNext()) {
//			User users=it.next();
//			System.out.println(users);
//			
//		}
//        User user = userMapper.findById(2);
//        System.out.println(user.getUsername());  
        sqlSession.commit();
        sqlSession.close();

	}
	//会话工厂
private static SqlSessionFactory getSessionFactory() {  
        SqlSessionFactory sessionFactory = null;  
        String resource = "configuration.xml";  
        try {  
            sessionFactory = new SqlSessionFactoryBuilder().build(Resources  
                    .getResourceAsReader(resource));  
        } catch (IOException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
        return sessionFactory;  
    }  

}

三,总结

mybatis类似一种图示关系运行:

bubuko.com,布布扣

mybatis学习笔记-1

标签:style   http   io   os   ar   使用   java   sp   文件   

原文地址:http://my.oschina.net/acitiviti/blog/333280

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!