mybatis是apache下一个开源项目,原称为ibatis,后改名为mybatis。
是一个基于Java的持久层框架。(类似与hibetnate)。
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
**重点内容**mybatis入门案例-增删改查操作
1 案例结构图(使用intellij idea开发)
2.conf.xml文件配置(主要是基本信息的配置以及关联usermapper.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">
<!--development : 开发模式
work : 工作模式-->
<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/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!--注册配置操作文件-->
<mappers>
<mapper resource="com/engle/vo/userMapper.xml"/>
</mappers>
</configuration>
2.usermapper.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="mybatisIDUS">
<!--查询某一条信息-->
<select id="getUser" parameterType="int" resultType="com.engle.vo.User">
select * from users where id=#{id}
</select>
<!--插入一条记录-->
<insert id="insertUser" parameterType="com.engle.vo.User">
insert into users(name,age) values(#{name},#{age})
</insert>
<!--更新一条记录-->
<update id="updateUser" parameterType="com.engle.vo.User">
update users set name=#{name},age=#{age} where id=#{id}
</update>
<!--删除一条记录-->
<delete id="deleteUser" parameterType="int">
delete from users where id=#{id}
</delete>
</mapper>
4.实体类配置(一定要添加空的构造方法)
public class User {
private int id;
private String name;
private int age;
public User() {
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
public User(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
//省略get和set方法
5.配置测试类(本案例使用junit测试 )
public class JunitTest {
/**
* 封装session
*/
public static SqlSession getSession(){
String resource = "conf.xml";
InputStream is = JunitTest.class.getClassLoader().getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
// SqlSession session = factory.openSession(true) 自动提交更新
SqlSession session = factory.openSession(); //默认为手动提交更新
return session;
}
/**
* 封装statement
*/
public static String getStatement(String statement){
return "mybatisIDUS."+statement;
}
/**
* 插入一条数据
*/
@Test
public void insert(){
String statement = "mybatisIDUS.insertUser";
SqlSession session = getSession();
int result = session.insert(statement, new User("wangwu", 19));
if (result==1){
session.commit();
session.close();
System.out.println("插入成功");
}
}
/**
* 通过id查询单个数据
*/
@Test
public void select(){
String statement = "mybatisIDUS.getUser";
SqlSession session = getSession();
User user = session.selectOne(statement, 1);
System.out.println(user);
session.close();
}
/**
* 更新数据
*/
@Test
public void update(){
SqlSession session = getSession();
String statement = getStatement("updateUser");
int result = session.update(statement, new User(10, "wangwu", 44));
if (result==1){
session.commit();
session.close();
System.out.println("更新成功");
}
}
/**
* 通过id删除一条
*/
@Test
public void delete(){
SqlSession session = getSession();
String statement = getStatement("deleteUser");
int result = session.delete(statement, 1);
if (result==1){
session.commit();
session.close();
System.out.println("删除成功");
}
}
}
通过次案例我们已经粗略的了解了一些关于mybatis的简单操作,
其实和我们所学的hibernate框架有很多的共同点。
具体的源代码可在如下网址获取: https://github.com/engle025/mybatis_3_study.git