概述
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
MyBatis配置
<!--导入依赖jar包--> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.29</version> </dependency> <dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.4</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.2</version> </dependency>
//创建pojo类
public class Dog {
private Integer id;
private String name;
private Integer health;
private Integer love;
private String strain;
private Date lytm;
private List<Master> masters;
}
//创建接口
public interface DogDao {
int save(Dog dog);
int update(Dog dog);
int delete(Integer id);
/**
* 批量删除
*
* @return
*/
int batchDelete(List<Integer> dogs);
int batchAdd(List<Dog> dogs);
int batchUpdate(List<Dog> dogs);
}
//编写mapper映射文件(编写SQL)
<?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="hn.zk.gpf.dao.DogDao">
<insert id="save">
insert into dog(name, health, love, strain, lytm)
values (#{name}, #{health}, #{love}, #{strain}, now())
</insert>
</mapper>
编写数据源properties文件
mysqldriver=com.mysql.cj.jdbc.Driver mysqlurl=jdbc:mysql://192.168.153.143:3306/jdbcstudb?allowMultiQueries=true mysqluser=root mysqlpwd=root
//编写全局配置文件(主要是配置数据源信息)
<?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>
<properties resource="database.properties"></properties>
<typeAliases>
<package name="hn.zk.gpf.pojo"/>
</typeAliases>
<environments default="mysqlDev">
<environment id="mysqlDev">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<!--数据库连接信息-->
<property name="driver" value="${mysqldriver}"/>
<property name="url" value="${mysqlurl}"/>
<property name="username" value="${mysqluser}"/>
<property name="password" value="${mysqlpwd}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--加载sql映射文件-->
<mapper resource="hn/zk/gpf/dao/Dogdao.xml"/>
<mapper resource="hn/zk/gpf/dao/Masterdao.xml"/>
<mapper resource="hn/zk/gpf/dao/UserDao.xml"/>
</mappers>
</configuration>
//测试
public class DogTest {
//工厂模式
SqlSessionFactory sqlSessionFactory = null;
//定义会话
SqlSession sqlSession = null;
//定义Dog对象
DogDao dogDao = null;
//初始化init方法
@Before
public void init() {
System.out.println("Start");
//加载mybatis-config.xml配置文件
InputStream inputStream = DogTest.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
//获取builder建造工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//通过建造工厂建造SqlSessionFactory
sqlSessionFactory = builder.build(inputStream);
//创建Session会话
sqlSession = sqlSessionFactory.openSession();
//获取Session会话的执行者
dogDao = sqlSession.getMapper(DogDao.class);
}
@Test
public void showInfo() {
System.out.println(sqlSessionFactory);
System.out.println(sqlSession);
System.out.println(dogDao);
}
@After
public void down() {
sqlSession.commit();
sqlSession.close();
System.out.println("Over");
}
}