1.4 在IDEA中使用Maven編寫一個MyBatis程序(IDEA+Maven+MyBatis)
1.4.1 創建項目
1. 先創建一個Maven項目
3. 配置相關的依賴包
這個詢問是問需不需要maven自動導入,點擊自動導入就好了
這裏我們需要導入到 mysql 和 mybatis 依賴的jar包
<!-- 打包方式 -->
<packaging>jar</packaging>
<dependencies>
<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.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
</dependencies>
.
.
.
1.4.2 MySQL進行建庫建表
# 創建數據庫表
create database mybatis;
use mybatis;
create table user(
id int(20) 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;
select * from user;
# 插入數據
insert into user(id,username,birthday,sex,address)
values(40,'張三','2001-3-20','男','陝西省漢中市');
insert into user(id,username,birthday,sex,address)
values(41,'李四','2001-4-16','男','陝西省西安市');
insert into user(id,username,birthday,sex,address)
values(42,'王五','2000-9-10','男','陝西省寶雞市');
select * from user;
.
.
.
1.4.3 創建實體類和dao的接口
1.創建實體類 cn.corey.domain.User.java
package cn.corey.domain;
import java.io.Serializable;
import java.util.Date;
/**
* @Auther: CoreyZhang
* @Date: 2020/4/22 0022 14:50
*
* 用戶實體類
*/
public class User implements Serializable {
private Integer id;
private String username;
private Date brithday;
private String 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 getBrithday() {
return brithday;
}
public void setBrithday(Date brithday) {
this.brithday = brithday;
}
public String getSex() {
return sex;
}
public void setSex(String 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 + '\'' +
", brithday=" + brithday +
", sex='" + sex + '\'' +
", address='" + address + '\'' +
'}';
}
}
2.創建dao接口 cn.corey.dao.IUserDao.java
package cn.corey.dao;
import cn.corey.domain.User;
import java.util.List;
/**
* @Auther: CoreyZhang
* @Date: 2020/4/22 0022 14:56
*
* 用戶的持久層接口
*/
public interface IUserDao {
/**
* 查詢所有操作
* @return
*/
List<User> findAll();
}
.
.
.
1.4.4 創建mybatis的主配置文件SqlMapConfig.xml
先引入dtd約束
<?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">
<?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">
<!-- 配置連接數據庫的4個基本信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 指定映射配置文件的位置,映射配置文件是指每個dao獨立的配置文件-->
<mappers>
<mapper resource="cn/corey/mapper/IUserMapper.xml"/>
</mappers>
</configuration>
.
.
1.4.5 創建映射配置文件IUserMapper.xml
注:這裏一定要一層一層的創建 ‘文件夾’
引入dtd約束,對映射配置文件進行配置
<?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.corey.dao.IUserDao">
<!-- 配置查詢所有-->
<select id="findAll" resultType="cn.corey.domain.User">
select * from user;
</select>
</mapper>
.
.
.
1.4.6 MyBatis入門案例
1. 引入log4j文件,完善項目
log4j.rootCategory=debug, CONSOLE, LOGFILE
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %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{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
2.創建測試類cn.corey.test.Mybatis.java
//1. 讀取配置文件
//2. 創建SqlSessionFactory工廠
//3. 使用工廠生產SqlSession對象
//4. 使用SqlSession創建Dao接口的代理對象
//5. 使用代理對象執行方法
//6. 釋放資源
package cn.corey.test;
import cn.corey.dao.IUserDao;
import cn.corey.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
import java.util.List;
/**
* @Auther: CoreyZhang
* @Date: 2020/4/22 0022 13:57
*
* mybatis的入門案例
*/
public class MybatisTest {
/**+
* 入門案例
* @param args
*/
public static void main(String[] args) throws Exception{
//1. 讀取配置文件
InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
//2. 創建SqlSessionFactory工廠
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(inputStream);
//3. 使用工廠生產SqlSession對象
SqlSession session = factory.openSession();
//4. 使用SqlSession創建Dao接口的代理對象
IUserDao userDao = session.getMapper(IUserDao.class);
//5. 使用代理對象執行方法
List<User> users = userDao.findAll();
for (User user : users){
System.out.println(user);
}
//6. 釋放資源
session.close();
inputStream.close();
}
}
.
.
.
1.4.7 運行測試
程序運行成功,查詢所有操作,程序功能實現成功
最後,在這裏放一下界面圖