• 01—mybatis开山篇


    什么是 MyBatis ?
           MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
     
    mybatis文档
     
    mybatis入门程序
    目录结构
    1.创建数据库和数据表,数据库采用mysql
    CREATE TABLE `tb_user` (
      `Id` BIGINT(20) NOT NULL AUTO_INCREMENT,
      `Username` VARCHAR(50) COLLATE utf8_bin DEFAULT NULL,
      `Password` VARCHAR(50) COLLATE utf8_bin DEFAULT NULL,
      `Nickname` VARCHAR(50) COLLATE utf8_bin DEFAULT NULL,
      `Type` INT(11) DEFAULT NULL,
      PRIMARY KEY (`Id`)
    ) 
    

      

    2.创建一个普通的java project,在项目上右建新建一个文件夹(folder) lib,将jar导入,引用相关jar。
    我这里一共用了三个jar,分别是:mybatis-3.1.1.jar、mysql-connector-java-5.1.17-bin.jar、junit-4.9.jar
     
     
    3.创建model和xml文件
    User.java
    package org.mybatis.test.model;
    
    public class User {
        private int id;
        private String username;
        private String password;
        private String nickname;
        private int type;
        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;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public String getNickname() {
            return nickname;
        }
        public void setNickname(String nickname) {
            this.nickname = nickname;
        }
        public int getType() {
            return type;
        }
        public void setType(int type) {
            this.type = type;
        }
    }
    User.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="org.mybatis.test.model.User">
        <insert id="add" parameterType="org.mybatis.test.model.User">
            insert into tb_user (username,password,nickname,type)
                value(#{username},#{password},#{nickname},#{type})
        </insert>
        <update id="update" parameterType="org.mybatis.test.model.User">
            update tb_user set password=#{password},nickname=#{nickname},type=#{type} where id=#{id}
        </update>
        
        <delete id="delete" parameterType="int">
            delete from tb_user where id=#{id}
        </delete>
        
        <select id="load" parameterType="int" resultType="org.mybatis.test.model.User">
            select * from tb_user where id=#{id}
        </select>
        
        <select id="list" resultType="org.mybatis.test.model.User">
            select * from tb_user
        </select>
    </mapper>
    4.mybatis-config.xml文件
          1.先添加jdbc.properties文件
    username=root
    password=123456
    url=jdbc:mysql://localhost:3306/mybatistest
    driver=com.mysql.jdbc.Driver
           2.添加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="jdbc.properties"/>
        <environments default="development">
            <environment id="development">
                <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>
        <!-- 将mapper文件加入到配置文件中 -->
        <mappers>
            <mapper resource="org/mybatis/test/model/User.xml"/>
        </mappers>
    </configuration>
    5.junit测试
    TestMyBatis.java
       
    package org.mybatis.test.test;
    
    import java.io.IOException;
    import java.io.InputStream;
    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.junit.Test;
    import org.mybatis.test.model.User;
    
    public class TestMyBatis {
        @Test
        public void testInsertUser() {
            try {
                //1、创建配置文件(mybatis-config.xml)的输入流
                InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
                //2、创建SQLSessionFactory
                SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
                //3、创建SQLSessioin
                SqlSession session = factory.openSession();
                //4、调用mapper文件插入数据(调用之前需要将mapper文件加入到mybatis-config.xml中)
                User u = new User();
                u.setNickname("小助理001");
                u.setPassword("123456");
                u.setUsername("zhuli001");
                u.setType(0);
                session.insert("org.mybatis.test.model.User.add", u);
                session.commit();
                session.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        @Test
        public void testUpdateUser() {
            try {
                InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
                SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
                SqlSession session = factory.openSession();
                User u = new User();
                u.setNickname("小猪手001");
                u.setPassword("111111");
                u.setType(0);
                u.setUsername("zhushou");
                u.setId(1);
                session.update("org.mybatis.test.model.User.update",u);
                session.commit();
                session.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        @Test
        public void testDeleteUser() {
            try {
                InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
                SqlSessionFactory f = new SqlSessionFactoryBuilder().build(is);
                SqlSession session = f.openSession();
                session.delete("org.mybatis.test.model.User.delete",2);
                session.commit();
                session.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        @Test
        public void testLoad() {
            SqlSession session = null;
            try{
                InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
                SqlSessionFactory f = new SqlSessionFactoryBuilder().build(is);
                session = f.openSession();
                User u = (User)session.selectOne(User.class.getName()+".load", 1);
                System.out.println(u.getNickname());
            }
            catch (IOException e) {
                e.printStackTrace();
            }
            finally {
                session.close();
            }
        }
        
        @Test
        public void testList() {
            SqlSession session = null;
            try{
                InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
                SqlSessionFactory f = new SqlSessionFactoryBuilder().build(is);
                session = f.openSession();
                List<User> us = session.selectList(User.class.getName()+".list", null);
                for (User u : us) { 
                     System.out.println(u.getId()+"-"+u.getUsername()+"-"+u.getNickname()); //逐个输出数组元素的值 
                } 
            } catch (IOException e) {
                e.printStackTrace();
            }
            finally {
                session.close();
            }
        }
        
        
    }
     
     
  • 相关阅读:
    移步
    使用mingw在windows下搭建c/c++IDE环境
    安全协议系列(一)WEP详解
    碎碎念、我的2013!
    运维常见问题总结
    排序,分页,出现数据重复或缺失
    Terracotta中锁与性能的问题
    【转】Linux系统的性能测试与性能分析
    Distributed Cache Guideline
    脚本大搜罗
  • 原文地址:https://www.cnblogs.com/itmu89/p/6406198.html
Copyright © 2020-2023  润新知