所需依赖如下:
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
create table user
(
id int auto_increment,
username varchar(32) not null comment '用户名',
birthday datetime default null null comment '生日',
sex char(1) default null null comment '性别',
address varchar(255) default null null comment '地址',
constraint user_pk
primary key (id)
)engine = InnoDB Default char set = UTF8;
com.company.entity包下为实体类,定义了如下属性以及相应的setter和getter方法并重写了toString()方法(方法生成和重写均可通过idea自动生成),其属性应与数据库对应
public class User implements Serializable {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
}
public interface IUserDao {
@Select("select * from user")
List<User> findAll();
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--mybatis的主配置文件-->
<configuration>
<!--配置环境-->
<environments default="mysql">
<!--配置mysql环境-->
<environment id="mysql">
<!--配置事务类型-->
<transactionManager type="jdbc"></transactionManager>
<!--配置数据源(连接池)-->
<dataSource type="POOLED">
<!--配置连接数据的四个基本信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://xuebing.online:3306/mybatis?useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="[用户名]"/>
<property name="password" value="[密码]"/>
</dataSource>
</environment>
</environments>
<!--指定映射配置文件的位置映射配置文件指的是每个DAO独立的配置文件-->
<mappers>
<mapper resource="com/company/dao/IUserDao.xml"/>
</mappers>
</configuration>
<?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">
<!--namespace中填写此映射文件对应的接口的完整类名-->
<mapper namespace="com.company.dao.IUserDao">
<!--id为findAll,即IUserDao接口中需要实现的方法名-->
<!--resultType指定当前sql语句执行完的结果集需要被封装成那种类型-->
<select id="findAll" resultType="com.company.entity.User">
select * from user
</select>
</mapper>
public class UserDaoImpl implements IUserDao {
private SqlSessionFactory factory;
public UserDaoImpl(SqlSessionFactory factory) {
this.factory = factory;
}
@Override
public List<User> findAll() {
//1.使用工厂创建session对象
SqlSession session = factory.openSession();
//2.使用session执行findAll()方法
List<User> users = session.selectList("com.company.dao.IUserDao.findAll");
session.close();
//3.返回查询结果
return users;
}
}
log4j.rootCatalog=debug,CONSOLE,LOGFILE
log4j.logger.org.apache.axis.enterprise=FATAL,CONSOLE
# console log
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c - %m%n
# 日志文件
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=D:/axis.log
log4j.appender.LOGFILE.append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c - %m%n
public class Test {
public static void main(String[] args) throws Exception {
//1.创建输入流读取全库配置文件
InputStream in = Resources.getResourceAsStream("SQLMapConfig.xml");
//2.创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
//3.使用工厂创建Dao的对象
IUserDao userDao = new UserDaoImpl(factory);
//4.使用代理对象执行方法
List<User> users = userDao.findAll();
for (User user : users)
System.out.println(user.toString());
//5.释放资源
in.close();
}
}