一. 创建数据库
1. 创建数据库
CREATE DATABASE demo;
2. 创建数据表
CREATE TABLE BOOK( BOOK_ID INT(6) PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(100), AUTHOR VARCHAR(100), PRICE DOUBLE(6,2) );
3. 插入数据
INSERT INTO BOOK (NAME,AUTHOR,PRICE) VALUES('西游记','吴承恩',9.9); INSERT INTO BOOK (NAME,AUTHOR,PRICE) VALUES('水浒站','施耐庵',19.9);
二. 添加依赖
从Mybatis官网下载最新版本,解压后将根目录的文件添加到本地项目的lieb文件夹:
接下来打开lib目录,可以看到下面的12个jar包:
将上面的lib目录下的所有文件也添加到本地项目的lib文件夹
接下来再将Mysql的驱动文件添加到本地项目的lib文件夹,到这里,本地项目的lib文件夹下一共有以下14个jar包:
在进行下一步前,我们先创建一个Book的实体类:
package io.zhangjia.entity; public class Book { /*建议严格遵守驼峰命名法*/ private Integer bookId; private String name; private String author; private Double price; public Integer getBookId() { return bookId; } public void setBookId(Integer bookId) { this.bookId = bookId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public Double getPrice() { return price; } public void setPrice(Double price) { this.price = price; } @Override public String toString() { return "Book{" + "bookId=" + bookId + ", name='" + name + '\'' + ", author='" + author + '\'' + ", price=" + price + '}'; } }
三. 配置文件
一共需要配置两个文件:mybatis-config.xml和项目名Mapper.xml,首先配置项目名Mapper.xml:
1. 右击src,新建一个File:
2. 输入文件名:BookMapper.xml,点击OK
3. 编辑BookMapper.xml,添加以下内容:
(注意:resultType是将每条查询结果封装成什么类型,比如Book类就是Book,即使查询全部的书,resultType也不应该是List<Book>,同理,比如List<Map<String,Object>>的resultType应该是map)
<?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"> <!--namespace:命名空间,应该设置为数据层接口的限定名,简洁起见,这里以zhangjia为例--> <mapper namespace="zhangjia"> <!-- 语句对象: id:是语句的唯一标识,不能重复,一般设置为数据层的方法名,同时建议数据层的方法不要重载 resultType:将将每条查询结果封装成什么类型,比如下面我们将每个查询结果封装成一个Book的实体类,必须是全类名 --> <select id="queryById" resultType="io.zhangjia.entity.Book"> <!-- 查询单条语句,和JDBC中不同,占位符不再使用? 而是使用#{字段名} --> SELECT * FROM BOOK WHERE BOOK_ID = #{BOOK_ID} </select> <!-- 查询多条语句 --> <select id="queryAll" resultType="io.zhangjia.entity.Book"> SELECT * FROM BOOK; </select> </mapper>
如果你直接复制上面的代码,请将红框里的内容根据自己的项目详情替换:
接下来配置mybatis-config.xml:
1. 右击src,新建一个File:
2. 输入文件名:mybatis-config.xml,点击OK
3. 编辑mybatis-config.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> <!-- 开启自动驼峰命名转换为数据库的命名方式,如果不开启,那么bookId将无法获取,一直是nul --> <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/数据库名(注意是数据库名,不是数据表名)"/> <property name="username" value="数据库用户名"/> <property name="password" value="数据库密码"/> </dataSource> </environment> </environments> <mappers> <!-- 如果有路径,需要这样配置: <mapper resource="xxx/xxx/.../BlogMapper.xml"/>--> <mapper resource="xxx/xxx/.../项目名Mapper.xml"/> </mappers> </configuration>
以我们的刚刚创建的数据库为例,则mybatis-config.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> <!-- 开启自动驼峰命名转换为数据库的命名方式,如果不开启,那么bookId将无法获取,一直是nul --> <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/demo"/> <property name="username" value="root"/> <property name="password" value="zhangjia"/> </dataSource> </environment> </environments> <mappers> <mapper resource="BookMapper.xml"/> <!-- 如果不是同级目录,需要这样配置: <mapper resource="xxx/xxx/.../BookMapper.xml"/>--> </mappers> </configuration>
如果你直接复制上面的代码,请将红框里的内容根据自己的项目详情替换:
四. 开启日志
开启日志的步骤也非常简单,右击src,新建名为log4j.properties的文件后,添加以下内容即可:
# Global logging configuration log4j.rootLogger=DEBUG, stdout #log4j.rootLogger=ERROR, stdout 如果不想开启DEBUG模式,可以将rootLogger设置为ERROR # MyBatis logging configuration... log4j.logger.org.mybatis.example.BlogMapper=TRACE # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
五. 执行sql语句
编写测试类,执行sql语句,其中:
resource的地址应和
package io.zhangjia.util; 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.IOException; import java.io.InputStream; import java.util.List; public class Main { public static void main(String[] args) throws IOException { // 从XML中构建SqlSessionFactory,也就是mybatis-config.xml文件的地址 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 从sqlSessionFactory中获取SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); /* 其中zhangjia是<mapper namespace="zhangjia">设置的命名空间 queryById <select id="queryById"设置的语句唯一表示 2是占位符,代表查询bookId = 2 的记录 selectOne代表结果为单条 */ Object o = sqlSession.selectOne("zhangjia.queryById", 2); System.out.println("o = " + o); // selectList代表查询结果为多条 List<Object> objects = sqlSession.selectList("zhangjia.queryAll"); for (Object ot : objects) { System.out.println("ot = " + ot); } sqlSession.close(); inputStream.close(); } }
请登录之后再进行评论