mybatis学习(一):简单入门
什么是 MyBatis ?
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
下面是例子
1,新建maven项目和数据库
CREATE TABLE blog ( id int(11) NOT NULL AUTO_INCREMENT, username varchar(20) NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
2,pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.luo</groupId> <artifactId>mybatis</artifactId> <version>0.0.1-SNAPSHOT</version> <build /> <dependencies> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.15</version> </dependency> </dependencies> </project>
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">
<!-- XML 配置文件(configuration XML)中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager)。 -->
<configuration>
<!-- 引入外部配置文件 -->
<properties resource="jdbc.properties"></properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClass}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- <mapper resource="com/luo/mybatis/example/BlogMapper.java" /> <mapper
resource="com/luo/mybatis/example/BlogMapper.xml" /> -->
<package name="com/luo/mybatis/example" />
</mappers>
</configuration>
3,jdbc.properties
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/luo
jdbc.username=root
jdbc.password=123456
4,类Blog
package com.luo.mybatis.example; import java.io.Serializable; public class Blog implements Serializable { private static final long serialVersionUID = 1L; private Integer id; private String username; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @Override public String toString() { return "Blog [id=" + id + ", username=" + username + "]"; } }
5,接口BlogMapper
package com.luo.mybatis.example;
import org.apache.ibatis.annotations.Select;
public interface BlogMapper {
//对于像 BlogMapper 这样的映射器类(Mapper class)来说,还有另一招来处理。它们的映射的语句可以不需要用 XML 来做,取而代之的是可以使用 Java 注解
/*@Select("SELECT * FROM blog WHERE id = #{id}")*/
Blog selectBlog(int id);
}
6,BlogMapper.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="com.luo.mybatis.example.BlogMapper"> <select id="selectBlog" resultType="com.luo.mybatis.example.Blog"> select * from Blog where id = #{id} </select> </mapper>
7,测试类Test
package com.luo.mybatis.example; import java.io.IOException; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class Test { public static void main(String[] args) throws IOException { /** * 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的 */ String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session = sqlSessionFactory.openSession(); try { // 方式一:有很多优势,首先它不是基于字符串常量的,就会更安全;其次,如果你的 IDE 有代码补全功能,那么你可以在有了已映射 SQL 语句的基础之上利用这个功能。 // BlogMapper mapper = session.getMapper(BlogMapper.class); // Blog blog = mapper.selectBlog(4); // 方式二:旧版本 MyBatis的方式 Blog blog = (Blog) session.selectOne("com.luo.mybatis.example.BlogMapper.selectBlog", 4); System.out.println(blog); } finally { session.close(); } } }
运行,output: Blog [id=4, username=test]

浙公网安备 33010602011771号