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();
}
}
目录结构
![](https://images.cnblogs.com/cnblogs_com/lazy-brain/1697771/o_200413122239mljg.jpg)
运行测试代码,成功从数据库中查出数据。
如有错漏,欢迎指正。
最后附上数据库建表命令
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;