Mybitas入门
一,导入依赖
<dependencies>
<!--导入数据库连接池的依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--导入mybatis的依赖-->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<!--导入测试类的的依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.2</version>
</dependency>
</dependencies>
二,对mybatis进行配置
XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)。
在父工程的pom里面需要写映射映射到
<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/><!--此处写xml所在的文件资源路径-->
</mappers>
</configuration>
****三,编写工具类
MybatisUtils工具类(只需要写一次),用来返回sqlsession对象,getsqlsession返回一个sqlsession的对象(固定模板)
使用 MyBatis 的主要 Java 接口就是 SqlSession。你可以通过这个接口来执行命令,获取映射器示例和管理事务。在介绍 SqlSession 接口之前,我们先来了解如何获取一个 SqlSession 实例。SqlSessions 是由 SqlSessionFactory 实例创建的。SqlSessionFactory 对象包含创建 SqlSession 实例的各种方法。而 SqlSessionFactory 本身是由 SqlSessionFactoryBuilder 创建的,它可以从 XML、注解或 Java 配置代码来创建 SqlSessionFactory。
生成sqlsession流程图如下图
Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
session也可以通过如上语句生成,诚然,这种方式能够正常工作,对使用旧版本 MyBatis 的用户来说也比较熟悉。但现在有了一种更简洁的方式——使用和指定语句的参数和返回值相匹配的接口(比如 BlogMapper.class),现在你的代码不仅更清晰,更加类型安全,还不用担心可能出错的字符串字面值以及强制类型转换。
public class MybatisUtils {
public static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream= Resources.getResourceAsStream(resource);
sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
四,编写(mapper层和pojo层)
pojo层,就是bean层,存放数据类型,切记属性名尽量与数据库中的列名相同
public class Book {
private int id;
private String bname;
private int price;
private String author;
private String content;
public Book(int id, String bname, int price, String author, String content) {
this.id = id;
this.bname = bname;
this.price = price;
this.author = author;
this.content = content;
}
public Book() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getBname() {
return bname;
}
public void setBname(String bname) {
this.bname = bname;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
@Override
public String toString() {
return "Boo{" +
"id=" + id +
", bname='" + bname + '\'' +
", price=" + price +
", author='" + author + '\'' +
", content='" + content + '\'' +
'}';
}
}
mapper层即dao层只需要编写接口即可,如下图列子
public interface BookDao {
List<Book> getBookList();
}
在mapper(Dao)文件夹里面配置相对应的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="dao.BookDao">
<!--此处必须写全类名,否则就只能在config里面配置别名或者包扫描(typeAliases)-->
<select id="getBookList" resultType="pojo.Book">
select * from book.book
</select>
</mapper>
五,编写测试类
public class BookDaoTest {
@Test
public void test(){
//第一步,获取sqlsession对象
SqlSession sqlSession= MybatisUtils.getSqlSession();
//获取接口对象
BookDao mapper = sqlSession.getMapper(BookDao.class);
List<Book> bookList = mapper.getBookList();
bookList.forEach(System.out::println);
}
}
测试成功,增删改只需要修改xml文件中的代码即可,并建立接口。