zoukankan      html  css  js  c++  java
  • Mybatis框架学习笔记一(基于注解的配置)

    Mybatis框架学习笔记一

    基础mybatis注解配置

    1.
    编写jdbcConfig.properties配置文件

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/数据库名
    jdbc.username=用户名
    jdbc.password=密码
    
    2.
    项目是基于maven创建的所以需要先导入依赖
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.5</version>
    </dependency>
    <dependency>
    <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.26</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
    </dependency>
    
    3.
    编写实体类,与数据库中的表对应(变量名与数据库表相对应)
    public class User implements Serializable {//实现序列化接口,便于数据封装
        private Integer id;
        private String username;
        private String address;
        private String sex;
        private Date birthday;
        //下面是get,set方式
        ...
    }
    
    注意:最好自动生成不然容易写错
    4.
    编写持久层接口
    public interface IUserDao {
        
        /**
         * 在mybatis中针对CRUD一个有四个注解
         * @Select @Inset @Update @Delete
         */
    
        @Select("select * from user")
    /*
        当实体类与数据库表相对应是,Mybatis框架会自动帮我们完成数据封装;
        如果实体类与与数据库表不对应,则需要通过下列注解建立数据库表与实体类的对应关系
        id = true,表示此属性是主键,其它Result注解不用写,property 是实体类的属性名,column是数据库表的键名
        @Results({
                @Result(id = true, property = "id", column = "id"),
                @Result(property = "username", column = "username"),
                @Result(property = "address", column = "address"),
                @Result(property = "sex", column = "sex"),
                @Result(property = "birthday", column = "birthday")
        })
    */
        List<User> findAll();
    
    }
    
    5.
    编写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>
        <!--引入外部配置文件-->
        <properties resource="jdbcConfig.properties"></properties>
        <!--配置别名-->
        <typeAliases>
            <package name="com.mybatis_learn.domain"></package>
        </typeAliases>
        <!--配置Mybatis环境-->
        <environments default="mysql">
            <environment id="mysql">
                <transactionManager type="JDBC"></transactionManager>
                <!--配置数据源-->
                <!--
                    UNPOOLED 不使用连接池的数据源
                    POOLED 使用连接池的数据源
                    JNDI 使用 JNDI 实现的数据源
                -->
                <dataSource type="POOLED">
                    <property name="driver" value="${jdbc.driver}"></property>
                    <property name="url" value="${jdbc.url}"></property>
                    <property name="username" value="${jdbc.username}"></property>
                    <property name="password" value="${jdbc.password}"></property>
                </dataSource>
            </environment>
        </environments>
        <!--指定带有注解的dao接口所在的位置-->
        <mappers>
            <package name="com.mybatis_learn.dao"></package>
        </mappers>
    </configuration>
    
    6.
    编写测试类
    public class MybatisAnnoTest {
        /**
         * 测试基于注解的mybatis的使用
         * @param args
         */
        public static void main(String[] args) throws IOException {
            //1.获取字节输入流
            InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
            //2.根据字节输入流构建SqlSessionFactory
            SqlSessionFactory factory= new SqlSessionFactoryBuilder().build(is);
            //3.根据SqlSessionFactory生产SqlSession
            SqlSession session = factory.openSession();
            //4.使用SqlSession获取Dao的代理对象
            IUserDao userDao = session.getMapper(IUserDao.class);
            //5.执行Dao的方法
            List<User> users = userDao.findAll();
            for(User user : users){
                System.out.println(user);
            }
            //6.释放资源
            session.close();
            is.close();
        }
    }
    
    目录结构

    运行测试代码,成功从数据库中查出数据。

    如有错漏,欢迎指正。

    最后附上数据库建表命令

    CREATE TABLE `user` (
      `id` int(11) NOT NULL auto_increment,
      `username` varchar(32) NOT NULL COMMENT '用户名称',
      `birthday` datetime default NULL COMMENT '生日',
      `sex` char(1) default NULL COMMENT '性别',
      `address` varchar(256) default NULL COMMENT '地址',
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
  • 相关阅读:
    图书排列
    L1-059 敲笨钟 (20 分)
    区间移位
    取球博弈
    poj 2456 Aggressive cows
    对局匹配
    发现环
    数字划分
    哥德巴赫分解
    把数组排成最小的数
  • 原文地址:https://www.cnblogs.com/lazy-brain/p/12693928.html
Copyright © 2011-2022 走看看