zoukankan      html  css  js  c++  java
  • Mybatis框架一:搭建测试

    Mybatis框架不再介绍:

    在JDBC中存在一些问题:

    1.频繁连接和释放资源浪费内存

    2.编码完成后不便于维护

    于是产生了简化数据库操作的框架:Hibernate、Mybatis等等,这里介绍Mybatis

    下载地址:https://github.com/mybatis/mybatis-3/releases

    接下来做一个搭建Mybatis的示例:

    导包:这些是必须包

    准备一个POJO:

    package pojo;
    
    import java.io.Serializable;
    import java.util.Date;
    
    public class User implements Serializable {
        private static final long serialVersionUID = 1L;
        private Integer id;
        private String username;// 用户姓名
        private String sex;// 性别
        private Date birthday;// 生日
        private String address;// 地址
    
    
        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 getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
        public Date getBirthday() {
            return birthday;
        }
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
        public String getAddress() {
            return address;
        }
        public void setAddress(String address) {
            this.address = address;
        }
        @Override
        public String toString() {
            return "User [id=" + id + ", username=" + username + ", sex=" + sex
                    + ", birthday=" + birthday + ", address=" + address + "]";
        }
    
    }

    数据库建表:

    CREATE DATABASE mybatis;
    USE mybatis;
    CREATE TABLE `user` (
      `id` INT(11) NOT NULL AUTO_INCREMENT,
      `username` VARCHAR(32) NOT NULL COMMENT '用户名称',
      `birthday` DATE DEFAULT NULL COMMENT '生日',
      `sex` CHAR(1) DEFAULT NULL COMMENT '性别',
      `address` VARCHAR(256) DEFAULT NULL COMMENT '地址',
      PRIMARY KEY (`id`)
    ) ENGINE=INNODB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;
    INSERT INTO `user` VALUES ('1', '王五', NULL, '2', NULL);
    INSERT INTO `user` VALUES ('10', '张三', '2014-07-10', '1', '北京市');
    INSERT INTO `user` VALUES ('16', '张小明', NULL, '1', '河南郑州');
    INSERT INTO `user` VALUES ('22', '陈小明', NULL, '1', '河南郑州');
    INSERT INTO `user` VALUES ('24', '张三丰', NULL, '1', '河南郑州');
    INSERT INTO `user` VALUES ('25', '陈小明', NULL, '1', '河南郑州');
    INSERT INTO `user` VALUES ('26', '王五', NULL, NULL, NULL);

    接下来配置文件:

    核心配置文件:

    注意名字必须是sqlMapConfig.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>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC" />
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver" />
                    <property name="url"
                        value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
                    <property name="username" value="root" />
                    <property name="password" value="xuyiqing" />
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="sqlmap/User.xml"/> 
        </mappers>
    </configuration>

    其他配置文件:log4j.properties(非必须)

    # Global logging configuration
    log4j.rootLogger=DEBUG, stdout
    # Console output...
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

     User.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">
    <mapper namespace="test">
        <!-- 通过ID查询一个用户 -->
        <select id="findUserById" parameterType="Integer" resultType="pojo.User">
            select * from user where id = #{v}
        </select>
    </mapper>

    测试类:

    package junit;
    
    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;
    import org.junit.Test;
    
    import pojo.User;
    
    public class MybatisTest {
        @Test
        public void testMybatis() throws Exception {
            //加载核心配置文件
            String resource = "sqlMapConfig.xml";
            InputStream in = Resources.getResourceAsStream(resource);
            //创建SqlSessionFactory
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
            //创建SqlSession
            SqlSession sqlSession = sqlSessionFactory.openSession();
            
            //执行Sql语句 
            User user = sqlSession.selectOne("test.findUserById", 10);
            
            System.out.println(user);
        }
    }

    完成!查询成功!

    最后附上目录图:

    注意:这里的一些配置文件信息在实际开发中并不会使用,只是用于搭建测试

  • 相关阅读:
    Java网络编程
    loj#6517. 「雅礼集训 2018 Day11」字符串(回滚莫队)
    bzoj4241: 历史研究(回滚莫队)
    洛谷P5050 【模板】多项式多点求值
    loj#6053. 简单的函数(Min_25筛)
    【BZOJ4144】[AMPPZ2014]Petrol(最短路+最小生成树+并查集)
    51nod 1781 Pinball(线段树)
    CF1110D Jongmah
    CF1106F Lunar New Year and a Recursive Sequence(矩阵快速幂+bsgs+exgcd)
    20. Valid Parentheses
  • 原文地址:https://www.cnblogs.com/xuyiqing/p/8600888.html
Copyright © 2011-2022 走看看