第一个入门的例子
1.在自己电脑的mysql上创建一个可用的表,并添加一点数据
2.利用maven创建一个普通的java项目(前面讲maven时有讲)
3.在maven中加入mybatis坐标,以及mysql的驱动坐标----mysql版本要与自己的mysql版本对应
4.在java中创建实体类,保存表中的数据
package ys.domain;
//推荐类名与表名一致
public class ssm {
//定义属性,要求和属性名和列名相同
private Integer id;
private String name;
private String email;
private Integer age;
//Alt+inset 快捷键生成属性的get和set方法
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
//Alt+insert重写toString方法
@Override
public String toString() {
return "ssm{" +
"id=" + id +
", name='" + name + '\'' +
", email='" + email + '\'' +
", age=" + age +
'}';
}
}
5.创建持久层的dao接口,定义操作数据库的方法
package ys.dao;
import ys.domain.ssm;
import java.util.List;
//操作student表
public interface ssmDao {
//定义查询ssm表的所有数据的
public List<ssm> selectsmms();
}
6.创建mybatis使用的配置文件,叫做sql映射文件----用于存放sql语句,一般一个表对应一个文件,文件类型为.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!--创建文件时,可以创建一个普通文档,然后命名加上.xml的文件后缀-->
<!--可以在下载的mybatis中的帮助文档找到这份代码格式-->
<!--指定约束文件-->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--mapper文件的根标签,必须有
namespace是命名空间,唯一,可以自定义推荐为对应dao接口的全限定名称(ys.dao.smmDao)-->
<mapper namespace="ys.dao.smmDao">
<!--在当前的文件中可以使用特定的标签,表示数据的特定操作
<select>:表示查询
<update>:表示更新数据库的操作
<insert>:表示插入
<delete>:表示删除
id:你要执行的sql语句的唯一标识,你的mybatis使用这个值来找到要执行的sql语句,可以自定义推荐为接口中的对应方法名
resultType:表示结果类型,是sql语句执行后得到的ResultSet,遍历这个得到的java对象的类型,值为类型的全限定名称-->
<select id="selectssm" resultType="ys.domain.ssm">
select id,name,email,age from ssm order by id
</select>
</mapper>
<!---->
7.创建mybatis的主配置文件:一个项目一个主配置文件。该文件提供了数据库的链接信息和sql映射文件的位置信息,该文件创建在resources文件下。
<?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>
<!--配置环境:数据库的链接信息-->
<!--default的值必须与id一样,告诉mybatis使用那个数据库
在environments中可以配置多个数据库,当default的值和那个数据库的id值相同时
则表示使用该数据库-->
<environments default="ys">
<!--environment:一个数据的信息配置
id:是一个唯一值,用于表示环境名-->
<environment id="ys">
<!--transactionManager:mybatis的事务类型
type:JDBC-->
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--name修饰的名称是固定的,不能修改-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ys"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
</dataSource>
</environment>
</environments>
<!--指定sql映射文件的位置-->
<mappers>
<!--一个mapper指定一个文件位置(从类路径开始的路径信息target(编译后出现)/classes)-->
<mapper resource="ys\dao\ssmDao.xml"/>
</mappers>
</configuration>
对文件进行编译后出现target文件夹
有些人编译后会发现target中没有xml文件,解决方法:在pom.xml中添加下列代码到build中:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
8.创建使用mybatis类,通过mybatis访问数据库
package ys;
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 org.apache.ibatis.session.defaults.DefaultSqlSessionFactory;
import ys.domain.ssm;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class MyApp {
public static void main(String[] args) {
//访问mybatis,读取smm数据
//1.定义mybatis主配置文件的名称,从类路径的根开始target/classes
String config="java.resources.mybatisdemo.xml";
//2.读取config表示的文件
try {
InputStream in=Resources.getResourceAsStream(config);
//3.创建SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//4.创建SqlSessionFactory对象
SqlSessionFactory factory = builder.build(in);
//5.获取SqlSession对象,从SqlSessionFactory中获取SQLSession----重点
SqlSession sqlSession = factory.openSession();
//6.指定要执行的sql语句的标识,定义格式sql映射文件中的namespace+"."+标签的id值----重点
String sqlId="ys.dao.ssmDao"+"."+"selectssm";
//7.执行sql语句,通过sqlId找到语句
List<ssm> ssmList=sqlSession.selectList(sqlId);
//8.输出结果
ssmList.forEach(stu -> System.out.println(stu));
//9.关闭SQLSession对象
sqlSession.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
各个文件的位置
最后的输出界面