mybatis学习总结

使用mybatis实例

一、导入.jar包

需要mybatis的和数据库的包,这里用的oracle

二、写配置文件

名字自己起,没有特殊要求

<?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>
      <!-- 定义一个别名 -->
      <typeAliases>
         <package name="com.model"/><!-- 这个包里的类,跟自动装配很想,类首字母小写 -->
      </typeAliases>
      <!-- mybatis的环境 -->
     <environments default="test">
        <environment id="test">
        <!-- mybatis支持的事务: 
                JDBC: 数据源自己的那个事务管理
                MANAGE(托管): 不支持tomcat, 一般用在大型商业服务器, weblogic, jboss -->
          <transactionManager type="JDBC"/>
          <!-- 数据源连接类型:POOLED, UNPOOLED, JNDI使用应用服务器的数据源连接
            POOLED:连接池-->
          <dataSource type="POOLED">
            <property name="driver" value="oracle.jdbc.OracleDriver"/>
            <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
            <property name="username" value="test1116"/>
            <property name="password" value="123456"/>
          </dataSource>
        </environment>
     </environments>
      <!-- 实体类映射 -->
      <mappers>
          <mapper resource="com/model/TUsersMapper.xml"/>
      </mappers>
  </configuration>

三、添加实体类

要跟数据库对应,可以用hibernate自动生成。

package com.model;

public class TUsers {
    private Integer id;
    private String username;
    private String password;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "TUsers [id=" + id + ", username=" + username + ", password=" + password + "]";
    }
    
}

 四、写实体类的映射配置

名字也是自己定义,没有特殊要求

<?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="aaa">
    <!-- 全表查询 -->
    <select id="list" resultType="com.model.TUsers">
        select * from t_users    
    </select>

    <!-- 添加 -->
    <insert id="add" parameterType="tUsers"><!-- 前面定义了别名,可用首字母小写类名  -->
        insert into t_users values(test.nextval,#{username},#{password})
    </insert>
    
    <!-- 删除 -->
    <update id="delete" parameterType="tUsers">
         delete t_users t where t.id=#{id}
    </update>
    
    <!-- 修改 -->
    <update id="update" parameterType="tUsers">
        update t_users t set t.username=#{username},t.password=#{password} where t.id=#{id}
    </update>    
    
    <!-- 用map来条件查询 -->
    <resultMap type="tUsers" id="users"/>
    <select id="select" parameterType="Map" resultMap="users">
        select * from t_users t where t.username = #{p1} and t.password = #{p2}
    </select>
</mapper>

五、用Junit,测试

这里还有个工具类生成SqLSessionFactory和SqlSession

package com.util;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MybatisUtil {
    private static SqlSessionFactory ssf;
    private static SqlSession ss;
    
    public static SqlSession getSession(){
        InputStream in=null;
        try {
            in=Resources.getResourceAsStream("mybatis_cfg.xml");
            ssf=new SqlSessionFactoryBuilder().build(in);
            ss=ssf.openSession();
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return ss;
    }
    
}

junit

package com.util;

import static org.junit.Assert.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.model.TUsers;

public class JTest {
    private SqlSession ss;
    @Before
    public void setUp() throws Exception {
        //先获取session
        ss=MybatisUtil.getSession();
        
    }

    @After
    public void tearDown() throws Exception {
        //最后提交和关闭session
        ss.commit();
        ss.close();
    }

    //全表查询
    public void test() {
        List<TUsers> list=ss.selectList("aaa.list");
        for(TUsers u:list){
            System.out.println(u);
            
        }
    }
    //添加
    public void add() {
        TUsers us=new TUsers();
        us.setUsername("张三");
        us.setPassword("33");
        int u=ss.insert("aaa.add",us );
        System.out.println(u);
            
    }
    //删除
    public void delete() {
        TUsers us=new TUsers();
        us.setId(2);
        int u=ss.delete("aaa.delete",us);
        System.out.println(u);
            
    }
    //修改
    public void update() {
        TUsers us=new TUsers();
        us.setId(1);
        us.setUsername("张三");
        us.setPassword("333");
        int u=ss.update("aaa.update",us);
        System.out.println(u);
            
    }
    //条件查询
    @Test
    public void select() {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("p1", "赵六");
        map.put("p2", "6666");

        List<TUsers> list = ss
                .selectList("aaa.select", map);
        for(TUsers u : list) {
            System.out.println(u);
        }
    }
}

条件查询结果

 

posted @ 2017-04-19 21:54  滥好人  阅读(394)  评论(0编辑  收藏  举报