zoukankan      html  css  js  c++  java
  • 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);
            }
        }
    }

    条件查询结果

  • 相关阅读:
    vue 客户端渲染和服务端渲染
    js 数组对象深拷贝
    vue template标签
    vue watch的高级用法
    js对象数组去重
    移动端触发touchend后阻止click事件
    重读JS(四)数据类型、作用域和内存问题
    重读JS(三)基本概念
    vue项目
    [vue问题解决]vue <router-link>在浏览器上点击失效(路由不跳转)
  • 原文地址:https://www.cnblogs.com/hq233/p/6736119.html
Copyright © 2011-2022 走看看