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;
原文地址:https://www.cnblogs.com/lazy-brain/p/12693928.html