一、在pom.xml里添加mybatis依赖以及MariaDB的驱动依赖
<dependencies>
<dependency>
<groupId>mariadb</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>1.8.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
</dependencies>
二、在resource目录下新建一个mybatis.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节点
里面有配置信息 分别是环境和映射
其中环境里有datasource,里面有我们熟悉的连接数据库的四个字符串
-->
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="org.mariadb.jdbc.Driver"/>
<property name="url" value="jdbc:mariadb://localhost:3306/mydb"/>
<property name="username" value="root"/>
<property name="password" value="yutong19970820"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="BookMapper.xml"/>
</mappers>
</configuration>
三、在resource目录下新建一个BookMapper.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,
每个方法对应自己的sql语句,每个sql语句对应有一个id
整个项目中所有的namespace.id必须是唯一的
resultType:结果的数据类型
-->
<mapper namespace="BookMapper">
<select id="selectAllBook" resultType="com.qianfeng.bean.BookBean">
select * from springmvcbook
</select>
<select id="seletBookCount" resultType="int">
select count (1) from springmvcbook
</select>
<select id="saveBook" resultType="com.qianfeng.bean.BookBean">
insert into springmvcbook values (default,#{name},#{price})
</select>
</mapper>
在这个配置文件中写SQL语句进行查询、增加等操作
resultType:结果的数据类型,也可以填Javabean的路径
每个方法对应自己的sql语句,每个sql语句对应有一个id。id可以理解为方法名
在增加操作中,values() 中的属性写法为#{?},如#{name}
四、创建一个图书类BookBean
public class BookBean {
private int id;
private String name;
private double price;
public BookBean(int id, String name, double price) {
this.id = id;
this.name = name;
this.price = price;
}
public BookBean() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("BookBean{");
sb.append("id=").append(id);
sb.append(", name='").append(name).append('\'');
sb.append(", price=").append(price);
sb.append('}');
return sb.toString();
}
}
五、测试类,进行数据的操作
原版:
public class BookTest {
@Test
public void getAllBook() {
try {
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis.xml"));
SqlSession session = sf.openSession(true);
List<BookBean> list = session.selectList("BookMapper.selectAllBook");
for (BookBean bookBean : list) {
System.out.println(bookBean);
}
if (session!=null){
session.close();
session = null;
}
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void getBookCount(){
try {
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis.xml"));
SqlSession session = sf.openSession(true);
Integer count = session.selectOne("BookMapper.seletBookCount");
System.out.println(count);
if (session!=null){
session.close();
session = null;
}
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void saveBook(){
try {
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis.xml"));
SqlSession session = sf.openSession(true);
BookBean bookBean = new BookBean();
bookBean.setName("赘婿");
bookBean.setPrice(20.5);
int result = session.insert("BookMapper.saveBook",bookBean);
System.out.println(result);
if (session!=null){
session.close();
session = null;
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
1、获取全部图书,存入List<>集合中,获取时用session.selectList :session.selectList("BookMapper.selectAllBook");
2、获得图书数量,用session.selectOne,且要用Integer
3、存入图书,用session.insert
* 1. 使用mybatis的配置文件以及SqlSessionFactoryBuilder建造者模式创建SqlSessionFactory对象
* 2. 使用SqlSessionFactory对象的openSession()方法来得到一个SqlSession对象,用该对象即可完成对象的所有的crud操作
* 3. 使用SqlSession对象来完成crud操作
* 4. 关闭资源
简化版:
public class BookTest2 {
private SqlSessionFactory sf = null;
private SqlSession session = null;
/**
* 1. 使用mybatis的配置文件以及SqlSessionFactoryBuilder建造者模式创建SqlSessionFactory对象
* 2. 使用SqlSessionFactory对象的openSession()方法来得到一个SqlSession对象,用该对象即可完成对象的所有的crud操作
* 3. 使用SqlSession对象来完成crud操作
* 4. 关闭资源
*
*/
@Before
public void setUp(){
try {
sf = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis.xml"));
session = sf.openSession(true);
} catch (IOException e) {
e.printStackTrace();
}
}
@After
public void tearDown(){
if(session != null){
session.close();
session = null;
}
}
@Test
public void getAllBook() {
/**
* session的crud方法("namespace.id");整个项目中的namespace.id必须唯一
*/
List<BookBean> list = session.selectList("BookMapper.selectAllBook");
for (BookBean bookBean : list) {
System.out.println(bookBean);
}
}
@Test
public void getBookCount(){
Integer count = session.selectOne("BookMapper.seletBookCount");
System.out.println(count);
}
@Test
public void saveBook(){
BookBean bookBean = new BookBean();
bookBean.setName("赘婿");
bookBean.setPrice(20.5);
int result = session.insert("BookMapper.saveBook",bookBean);
System.out.println(result);
}
}