您的位置:首页 > 其它

MyBatis学习总结(一)---简单配置使用(基于XML方式实现CRUD以及加载配置文件的三种方式)

2018-11-20 21:00 806 查看

  一、Mybatis简介

   Mybatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。

   MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

 二、简单配置使用示例

   1.Mybatis可应用于普通JAVA项目或JAVAWeb项目中,此处我建立的是一个JAVAWeb项目,目录结构如下:

      

      2.导入相应的jar包

        一个是mybatis的包,如:mybatis-3.4.6.jar;一个是数据库的包,如:mysql-connector-java-5.1.37.jar 

       3.配置Mybatis的配置文件,如:

[code]<?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:信息配置的是连接数据库的(数据源的)一些参数,如用户名,密码等,MyBatis数据库操作的session就是根据这些信息初始化的-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 数据源配置 -->
<dataSource type="POOLED">
<!-- 数据库驱动 -->
<property name="driver" value="com.mysql.jdbc.Driver" />
<!-- 数据库连接URL  -->
<property name="url" value="jdbc:mysql://localhost:3306/mybatisstudy?useUnicode=true&amp;characterEncoding=utf8"/>
<!-- 数据库用户名和密码 -->
<property name="username" value="root" />
<property name="password" value="" />
</dataSource>
</environment>
</environments>
<!-- mappers:配置的是一个个Mapper文件,这些文件来约束数据库的信息(Relationship) 和 对象(Object)的信息映射(Mapper);它负责完成对象和数据库表的映射,是ORM最具体的配置-->
<mappers>
<!-- 配置实体映射文件 -->
<mapper resource="com/mybatisstudy/mapper/userMap.xml" />
</mappers>
</configuration>

   

   4.建表,如:

       

 

    5.编写用于测试的实体类,如:

[code]package com.mybatisstudy.model;

public class User {
private int id;
private String name;
private String sex;
private int age;

public User() {
super();
}

public User(String name, String sex, int age) {
super();
this.name = name;
this.sex = sex;
this.age = age;
}

public User(int id, String name, String sex, int age) {
super();
this.id = id;
this.name = name;
this.sex = sex;
this.age = age;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getSex() {
return sex;
}

public void setSex(String sex) {
this.sex = sex;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

@Override
public String toString() {
return "[id:" + id + ",name:" + name + ",sex:" + sex + ",age:" + age + "]";
}

}

     6.编写该实体类的映射文件,注意需要在Mybatis的配置文件中引用该文件,如:

    

[code]<?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.mybatisstudy.mapper.userMap">
<select id="selectAllUser"
resultType="com.mybatisstudy.model.User">
SELECT * FROM user ;
</select>

<select id="selectUserById" parameterType="int"
resultType="com.mybatisstudy.model.User">
SELECT * FROM user where id = #{id} ;
</select>

<insert id="addUser" parameterType="com.mybatisstudy.model.User">
INSERT INTO user(id,name,sex,age) VALUES(#{id},#{name},#{sex},#{age});
</insert>

<delete id="deleteUserById" parameterType="com.mybatisstudy.model.User">
DELETE FROM user WHERE id=#{id};
</delete>

<update id="updateUserById" parameterType="com.mybatisstudy.model.User">
UPDATE user SET age=#{age} ,name=#{name}  WHERE id=#{id}
</update>

</mapper>

     7.测试,如:

       其中加载Mybatis的配置文件的方式主要有三种,第一种是通过类加载器来加载;第二种是采用文件读取的方式来加载;第三种是使用Mybatis提供的Resources类来进行加载。

       注意:对于涉及到增删改数据时,需要手动进行提交(session.commit())。

[code]package com.mybatisstudy.test;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.util.List;

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.mybatisstudy.model.User;

public class Test {
public static void main(String[] args) {

// mybatis的配置文件
String resource = "mybatisconf.xml";
InputStream inputStream = null;

// 方式一:使用类加载器加载mybatis的配置文件
// inputStream = Test.class.getClassLoader().getResourceAsStream(resource);

// 方式二:采用文件读取的方式,读取配置文件
/*File file = new File("src/mybatisconf.xml");
Reader reader = null;
try {
reader = new FileReader(file);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);*/

// 方式三:使用MyBatis提供的Resouces类加载mybatis的配置文件
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

// 构建SqlSessionFacoty工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

// 创建session对象,并使用它来进行数据库的各项 操作
SqlSession session = sqlSessionFactory.openSession();

// 根据Id查询用户
String statement = "com.mybatisstudy.mapper.userMap.selectUserById";
User user = session.selectOne(statement, 1001);
System.out.println(user);

// 查询所有的用户
String statement2 = "com.mybatisstudy.mapper.userMap.selectAllUser";
List<User> users = session.selectList(statement2);
System.out.println(users);

// 添加用户信息
User user2 = new User(1003, "小杰", "男", 20);
String statement3 = "com.mybatisstudy.mapper.userMap.addUser";
int line = session.insert(statement3, user2);
// 对于增删改,需要手动提交事务,才能将数据持久化,才能避免出现脏数据
session.commit();

// 修改用户信息
User user3 = new User(1003, "小明", "男", 21);
String statement4 = "com.mybatisstudy.mapper.userMap.updateUserById";
int line2 = session.update(statement4, user3);
session.commit();

// 删除用户信息
String statement5 = "com.mybatisstudy.mapper.userMap.deleteUserById";
int line3 = session.delete(statement5, 1003);
session.commit();

session.close();

}
}

    8.结果:

    

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐