二,对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文件中的代码即可,并建立接口。
