简介
什么是 MyBatis ?
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
所需jar包:mybatis-3.3.1.jar和mysql-connector-java-5.1.7-bin.jar
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>
<!-- 导入文件键值对 -->
<properties resource="jdbc.properties"/>
<typeAliases>
<!-- 参数类型配置别名 -->
<typeAlias type="com.aqing.demo.model.User" alias="User"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<!-- 数据库用户名 -->
<property name="username" value="${username}"/>
<!-- 数据库密码 -->
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers >
<mapper resource="com/aqing/demo/model/User.xml"/>
</mappers>
</configuration>
通过数据库表创建相应的实体类:User
package com.aqing.demo.model;
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
jdbc.properties文件
username=root
password=521795
url=jdbc:mysql://localhost:3306/test
driver=com.mysql.jdbc.Driver
User.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.aqing.demo.model.User"><!--解决包的冲突问题 -->
<insert id="add" parameterType="com.aqing.demo.model.User"><!-- 此处没有用到别名-->
insert into user (username,password) value (#{username},#{password})
</insert>
<update id="update" parameterType="com.aqing.demo.model.User">
update user set username=#{username},password=#{password} where id=#{id}
</update>
<delete id="delete" parameterType="User"><!--此处用到别名-->
delete from user where id=#{id}
</delete>
</mapper>
TestMybatis.java文件:
package com.aqing.demo.test;
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;
import com.aqing.demo.Util.JdbcUtil;
import com.aqing.demo.model.User;
public class TestMybatis {
public static void main(String[] args){
TestDelete();
}
private static void TestDelete(){
SqlSession session=null;
try {
session = JdbcUtil.getSession();
User u=new User();
u.setId(1);
session.delete("com.aqing.demo.model.User.delete", u);
session.commit();
} catch (Exception e) {
session.rollback();
e.printStackTrace();
}finally{
JdbcUtil.closeSession(session);
}
}
private static void TestUpdate(){
SqlSession session=null;
try {
//没有用JdbcUtil类 这部分是公共的,为了提高代码复用率,把这段代码抽取出去,上面就是抽取的
String resource="mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
session=factory.openSession();
User u=new User();
u.setUsername("wuee");
u.setPassword("1eee5");
u.setId(1);
session.update("com.aqing.demo.model.User.update", u);
session.commit();
} catch (IOException e) {
session.rollback();
e.printStackTrace();
}finally{
JdbcUtil.closeSession(session);
}
}
private static void TestAdd(){
SqlSession session=null;
try {
String resource="mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
session=factory.openSession();
User u=new User();
u.setUsername("wukong");
u.setPassword("12345");
session.insert("com.aqing.demo.model.User.add", u);
session.commit();
} catch (IOException e) {
session.rollback();
e.printStackTrace();
}finally{
JdbcUtil.closeSession(session);
}
}
}
想知道mybatis内部实现请跳转:http://blog.csdn.net/luanlouis/article/details/40422941%20%20