1.首先创建maven工程
Groupid:cn.poison(自定义域名)
ArtifactId:项目名称
Packing:jar(打包类型)
2.在pom.xml文件中导入依赖包
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.6</version>
</dependency>
</dependencies>
3.编写数据表实体类
package cn.poison.pojo;
import java.util.Date;
/**
* \*用户表实体类
* \* Created with IntelliJ IDEA.
* \* Author: Poison
* \* Date: 2020/1/7
* \* CreateTime: 16:40
* \
*/
public class User {
private Integer id;
private String username;
private Date birthday;
private Character sex;
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 Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public Character getSex() {
return sex;
}
public void setSex(Character sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", birthday=" + birthday +
", sex=" + sex +
", address='" + address + '\'' +
'}';
}
}
以查询所有为例
一、基于XML的配置方式
1.配置连接数据库的基本信息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">
<!-- mybatis的主配置文件 -->
<configuration>
<!-- 配置环境 -->
<environments default="mysql">
<!-- 配置mysql的环境 -->
<environment id="mysql">
<!-- 配置事务的类型 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源(连接池) -->
<dataSource type="POOLED">
<!-- mysql数据库注册驱动 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!-- mysql数据库连接地址 -->
<property name="url" value="jdbc:mysql://localhost:3306/你的数据库名?characterEncoding=utf-8"/>
<!-- mysql数据库登录用户名 -->
<property name="username" value="root"/>
<!-- mysql数据库登录密码 -->
<property name="password" value="****"/>
</dataSource>
</environment>
</environments>
<!-- 指定映射配置mapper文件的位置,一般放在resource文件夹下 -->
<mappers>
<mapper resource="mybatis/mapper/UserMapper.xml"></mapper>
</mappers>
</configuration>
注意:基于xml的配置,这里需要指定resource目录下mapper.xml文件路径
我的项目结构如下
2.编写mapper接口(也有人叫Dao接口,其实意思是一样的,都是对数据库进行操作)
/**
* \*用户表持久层接口
* \* Created with IntelliJ IDEA.
* \* Author: Poison
* \* Date: 2020/1/7
* \* CreateTime: 16:38
* \
*/
public interface UserMapper {
/**
* 查询所有用户
* @return
*/
List<User> findAll();
}
3.配置查询SQL的XXXmapper.xml文件(此文件名对应上面的mapper接口名)
<?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="cn.poison.mapper.UserMapper">
<!-- 配置查询所有用户 -->
<select id="findAll" resultType="cn.poison.pojo.User">
select * from user
</select>
</mapper>
到这里,基于xml的配置已经完成,可以进行使用测试
public static void main(String[] args) throws Exception{
//1.读取配置文件
InputStream in= Resources.getResourceAsStream("mybatis/SqlMapConfig.xml");
//2.创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
//3.使用工厂生产SqlSession对象
UserMapperImpl mapper = new UserMapperImpl(factory);
//5.使用代理对象执行方法
List<User> userList = mapper.findAll();
userList.forEach(li-> System.out.println(li));
//6.释放资源
in.close();
}
二、基于注解的配置方式
此方式与基于xml配置的方式比较使用,参考上面
1.其他与基于xml配置方式相同,基于注解的使用不需要配置mapper.xml文件,在使用时,只需要在mapper接口的方法上添加注解和sql语句
2.要在SqlMapConfig.xml文件中修改
至此配置结束
测试使用:使用动态代理,创建dao代理对象代替编写实现类的方法
public class TestMybatis {
/**
* 测试查询所有
*/
@Test
public void testQuery() throws Exception{
//1.读取配置文件
InputStream in = Resources.getResourceAsStream("mybatis/SqlMapConfig.xml");
//2.获取SqlSessionFactory对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//3.获取SqlSession对象
SqlSession sqlSession = factory.openSession();
//4.获取dao的代理对象
IUserDao userDao = sqlSession.getMapper(IUserDao.class);
//5.执行查询所有的方法
List<User> userList = userDao.findAll();
for (User user : userList) {
System.out.println("------->"+user);
}
//提交事务
sqlSession.commit();
//6.释放资源
sqlSession.close();
in.close();
}