mybatis是优秀的持久层框架 , 它支持定制化SQL , 存储过程以及高级映射 , MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
mybatis和hibernate的比较
mybatis是半自动ORM框架 , 必须写sql , 支持事物处理 , 也缓存都支持
hibernate是全自动ORM框架 , 可以不写sql , 支持事物管理 ,缓存都支持,二级缓存比mybatis更好
创建maven工程 ,添加对应jar包
<dependencies>
<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.40</version>
</dependency>
</dependencies>
创建mybatis全局配置文件(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>
<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 /again?characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/liy/pojo/userMapping.xml"/>
</mappers>
</configuration>
定义javaBean对象
创建映射文件
<?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.liy.pojo.User">
<select id="query" resultType="com.liy.pojo.User">
select * from user;
</select>
<insert id="insert" parameterType="com.liy.pojo.User">
insert into user(name,password,address)values(#{name},#{password},#{address})
</insert>
<delete id="delete" >
delete from user where id = #{id}
</delete>
<update id="update" parameterType="com.liy.pojo.User">
update user set
name = #{name},
password = #{password},
address = #{address}
where id = #{id}
</update>
</mapper>
将映射文件添加到主配置文件中
测试代码
public class Test {
public static void main(String[] args) throws IOException {
// 1. 加载配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
// 2. 根据配置文件获取一个SqlSessionFactory对象,这个对象相当于连接工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
// 3. 获取一个sqlsession,sqlsession类似于之前学过的Connection
SqlSession sqlSession = sqlSessionFactory.openSession();
List<User> list = sqlSession.selectList("com.liy.pojo.User.query");
for (User user : list) {
System.out.println(user);
}
sqlSession.close();
}
}