实现方法步骤:
1.引入依赖
2.建立pojo类和dao层 dao层里面的接口目录 和下面的mapper.xml映射文件保持一致
3.编写propertes文件 写jdbc的driver url和用户名密码 以便在核心配置文件中引用
4.编写核心配置文件 引入properties中的密码 账户 url等数据
注意:
在核心配置文件中 可以使用类名映射
下图中会详细讲解类名映射
5 编写映射文件 映射文件中的mapper namespace要和对应的接口名保持一致,select update delete insert 中id要和接口的方法名保持一致
6.编写测试类
a. 先写出初始方法 获得sqlSessionFactory
b.在下面的测试方法中 使用sqlSessionFactory获得sqlSession
c.使用sqlSession.getMapper(接口名.class)方法 建立连接
d.调用接口中的方法执行
类名映射详解:
示例目录结构:
执行具体代码块:
1.引入依赖 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.cfg</groupId>
<artifactId>mybatis_day02</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<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>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
</project>
2.建立pojo类和dao层
pojo类:
package cn.cfg.pojo;
public class User {
private Integer id;
private String username;
private String sex;
private String pws;
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 String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getPws() {
return pws;
}
public void setPws(String pws) {
this.pws = pws;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", sex='" + sex + '\'' +
", pws='" + pws + '\'' +
", address='" + address + '\'' +
'}';
}
}
dao类 (接口,对应映射文件和test类)
package cn.cfg.dao;
import cn.cfg.pojo.User;
import java.util.List;
public interface UserDao {
//查询所有
public List<User> findAll();
//更改信息
public void update(User user);
//根据id查询
public List<User> selectByID(Integer id);
}
3.编写propertes文件(jdbc.properties)
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root
4.编写核新配置文件(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="jdbc.properties"></properties>
<!--即把下面的cn.cfg.pojo.User 在映射文件里面替换为user-->
<typeAliases>
<typeAlias type="cn.cfg.pojo.User" alias="user"></typeAlias>
<typeAlias type="cn.cfg.dao.UserDao" alias="userdao"></typeAlias>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--传统写法-->
<!--<mapper resource="cn/cfg/dao/UserDao.xml"/>-->
<!--引入映射文件时 映射文件目录和接口目录一致 可以用package标签直接写接口路径-->
<package name="cn.cfg.dao"></package>
</mappers>
</configuration>
5.映射文件
<?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.cfg.dao.UserDao">
<!--查询所有-->
<select id="findAll" resultType="user">
select * from user
</select>
<!--更改信息-->
<update id="update" parameterType="user">
UPDATE user set username=#{username},address=#{address} where id=#{id}
</update>
<!--通过id查询-->
<select id="selectByID" parameterType="java.lang.Integer" resultType="user">
SELECT * from user where id=#{id}
</select>
</mapper>
6.测试类
package cn.cfg.test;
import cn.cfg.dao.UserDao;
import cn.cfg.pojo.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import java.io.InputStream;
import java.util.List;
public class TestMybatis {
SqlSessionFactory sqlSessionFactory=null;
@Before
public void init(){
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("SqlMapConfig.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void findAllMyBaits(){
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
List<User> userList = userDao.findAll();
for (User user:userList){
System.out.println(user);
}
sqlSession.close();
}
// 更改信息 更改第是个小龙女为龙姑娘
@Test
public void upateMyBatis(){
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
User user = new User();
user.setUsername("龙姑娘");
user.setAddress("绝情谷底");
user.setId(10);
userDao.update(user);
sqlSession.commit();
sqlSession.close();
}
@Test
public void testById(){
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
List<User> users = userDao.selectByID(9);
System.out.println(users);
}
}