IDE:Myeclipse2018
database:MySQL
JDK:JAVASE-10
1.创建java项目,项目结构如下图所示
2.创建lib目录,将jar包放进lib目录下,全选 Build path-->add to build path
3.写db.properties文件
driverName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test1?useSSL=false&serverTimezone=UTC
userName=root
password=xxxx
4.写mybatis.xml配置文件,读取db.properties文件,配置数据库环境,读取mapper.xml文件
<!-- .DTD文件是xml格式文件的约束文件,它约束了该xml文件使用的标签以及标签之间的关系 -->
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- 根标签 -->
<configuration>
<!-- properties 标签代表 加载指定路径的properties文件 -->
<properties resource="db.properties"></properties>
<!-- 可以配置很多数据库环境 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理 -->
<transactionManager type="JDBC"/>
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<!-- 数据库连接的参数 -->
<property name="driver" value="${driverName}"/>
<property name="url" value="${url}"/>
<property name="username" value="${userName}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!-- 加载 mapper映射文件 -->
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
5.写实体类、dao层接口
package com.entity;
import java.util.Date;
public class User {
private int userId;
private String user_name;//此时要保证属性名字和数据库的字段名一样
private String password;
private String email;
private String apartment;
private String tel;
private String address;
private Date createTime;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getuser_name() {
return user_name;
}
public void setuser_name(String user_name) {
this.user_name = user_name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getApartment() {
return apartment;
}
public void setApartment(String apartment) {
this.apartment = apartment;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}
public interface UserDao {
List<User> findAll();
}
6.写mapper.xml
<?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="com.dao.UserDao">
<select id="findAll" resultType="com.entity.User">
select * from t_user
</select>
</mapper>
7.写测试类 ,运行
public class MybatisTest {
public static void main(String[] args) {
//构建配置文件的输入流
InputStream input;
try {
input = Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(input);
SqlSession session = sqlSessionFactory.openSession();
List<User> users = session.selectList("com.dao.UserDao.findAll");
for(User user : users) {
System.out.println(user.getuser_name());
}
session.close();
} catch (IOException e) {
}
}
}
8.我遇到的问题
java.lang.ClassNotFoundException: Cannot find class: com.mysql.cj.jdbc.Driver
就是驱动找不到,原因是之前的驱动版本太低,后来改成8.0就可以正常运行啦!
9.如果想要实体类的属性名可以不和字段名一样的话,可以在mapper.xml中写上ORM映射,之前的sql语句记得把resulttype改成resultmap
<resultMap type="_student" id="student">
<!-- 要将 实体类的属性 与 数据库的字段名对应起来 -->
<!-- 主键设置 -->
<id property="uid" column="u_id"/>
<!-- 其他字段的映射 -->
<result property="uPwd" column="u_Pwd"/>
<result property="uRegtime" column="u_Regtime"/>
<!-- 没有写的字段,默认ResultSet 对象会获取 与 实体属性名一样的 字段名 -->
</resultMap>
10.项目结构