1、创建一个maven项目并导入相关依赖
在pom.xml文件中导入相关依赖

2、创建一个POJO
对象中的属性与数据库的字段对应,因为我们从数据库查询、删除等是通过对象来传递的
package com.zhouym.javabean;
public class User {
private Integer id;
private String name;
private Integer age;
private String address;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + ", address=" + address + "]";
}
}
3、创建对象映射文件

配置文件中封装crud操作的sql语句
<?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.zhouym.javabean.User">
<!-- 将数据库查询的结果保存到对象中 -->
<select id="query" resultType="com.zhouym.javabean.User">
<!-- 书写sql语句,没有分号 -->
select * from tb_user
</select>
<!-- 增加数据 -->
<insert id="insert" parameterType="com.zhouym.javabean.User">
insert into tb_user(name,age,address) values(#{name},#{age},#{address})
</insert>
<!-- 修改数据 -->
<update id="update" parameterType="com.zhouym.javabean.User">
update tb_user set name=#{name},age=#{age},address=#{address} where id=#{id}
</update>
<!-- 删除数据,也可以指定类型 -->
<delete id="delete" parameterType="int">
delete from tb_user where id=#{id}
</delete>
</mapper>
4、在src/resources下创建配置文件

db.properties配置文件封装数据库的信息,当我们需要用到什么数据库,可以直接切换
#mysql
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/tb_user?characterEncoding=utf-8
username=root
password=123456
#oracle
#driver=oracle.jdbc.driver.OracleDriver
#url=jdbc:oracle:thin:@localhost:1521:tb_user
#username=root
#password=123456
#SQLServer
#driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
#url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tb_user
#username=root
#password=123456
mybaties-config用于配置数据库连接信息
<?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="db.properties"></properties>
<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/zhouym/javabean/userMapping.xml" />
</mappers>
</configuration>
5、创建单元测试类
package com.zhouym.junit;
import static org.junit.Assert.*;
import java.io.IOException;
import java.io.InputStream;
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 org.junit.Test;
import com.zhouym.javabean.User;
public class JunitTest {
@Test
public void test() throws IOException {
//通过Resources对象加载配置文件
InputStream in = Resources.getResourceAsStream("mybaties-config.xml");
//获取sqlSessionFactory对象
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);
//获取sqlsession对象
SqlSession sqlSession = ssf.openSession();
//参数:namespace+id,根据这个路径,再根据这个id可以查询到这条sql语句
List<User> list = sqlSession.selectList("com.zhouym.javabean.User.query");
for (User user : list) {
System.out.println(user);
}
//释放资源
sqlSession.close();
}
@Test
public void add() throws IOException {
InputStream in = Resources.getResourceAsStream("mybaties-config.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession = factory.openSession();
User user = new User();
user.setName("老邓");
user.setAge(18);
user.setAddress("成都");
int result = sqlSession.insert("com.zhouym.javabean.User.insert",user);
//显式提交
sqlSession.commit();
if (result > 0) {
System.out.println("插入成功!!!");
}
//释放资源
sqlSession.close();
}
@Test
public void update() throws IOException {
InputStream in = Resources.getResourceAsStream("mybaties-config.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession = factory.openSession();
User user = new User();
user.setName("隔壁老王");
user.setAge(18);
user.setAddress("武汉");
user.setId(5);
int result = sqlSession.update("com.zhouym.javabean.User.update", user);
sqlSession.commit();
if (result > 0) {
System.out.println("修改成功");
}
sqlSession.close();
}
@Test
public void delete() throws IOException {
InputStream in = Resources.getResourceAsStream("mybaties-config.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession = factory.openSession();
int result = sqlSession.update("com.zhouym.javabean.User.delete", 5);
sqlSession.commit();
if (result > 0) {
System.out.println("删除成功");
}
sqlSession.close();
}
}
测试结果
增加数据

查询数据

修改数据

删除数据

源码分析




根据上面简单分析,获取SqlSessionFactory对象以及Inputstream对象时出现重复代码,可以对其进行封装成工具类,可以设计成单例模式
封装的DBUtils
package com.zhouym.DBUtils;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class DBUtils {
private static SqlSessionFactory factory;
public static SqlSessionFactory getInstance() {
if (factory == null) {
InputStream in = null;
try {
in = Resources.getResourceAsStream("mybaties-config.xml");
} catch (Exception e) {
e.printStackTrace();
}
synchronized (DBUtils.class) {
if (factory == null) {
factory = new SqlSessionFactoryBuilder().build(in);
}
}
}
return factory;
}
}
测试类
package com.zhouym.junit;
import static org.junit.Assert.*;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import com.zhouym.DBUtils.DBUtils;
import com.zhouym.javabean.User;
public class NewJunitTest {
@Test
public void test() {
//通过DBUtils获取SqlSessionFactory对象
SqlSessionFactory factory = DBUtils.getInstance();
//获取SqlSession对象
SqlSession session = factory.openSession();
List<User> list = session.selectList("com.zhouym.javabean.User.query");
for (User user : list) {
System.out.println(user);
}
session.close();
}
@Test
public void test1() {
//通过DBUtils获取SqlSessionFactory对象
SqlSessionFactory factory = DBUtils.getInstance();
//获取SqlSession对象
SqlSession sqlSession = factory.openSession();
User user = new User();
user.setName("老邓");
user.setAge(18);
user.setAddress("成都");
int result = sqlSession.insert("com.zhouym.javabean.User.insert",user);
//显式提交
sqlSession.commit();
if (result > 0) {
System.out.println("插入成功!!!");
}
//释放资源
sqlSession.close();
}
@Test
public void test2() {
//通过DBUtils获取SqlSessionFactory对象
SqlSessionFactory factory = DBUtils.getInstance();
//获取SqlSession对象
SqlSession sqlSession = factory.openSession();
User user = new User();
user.setName("隔壁老王");
user.setAge(18);
user.setAddress("武汉");
user.setId(10);
int result = sqlSession.update("com.zhouym.javabean.User.update", user);
sqlSession.commit();
if (result > 0) {
System.out.println("修改成功");
}
sqlSession.close();
}
@Test
public void test3() {
//通过DBUtils获取SqlSessionFactory对象
SqlSessionFactory factory = DBUtils.getInstance();
//获取SqlSession对象
SqlSession sqlSession = factory.openSession();
int result = sqlSession.update("com.zhouym.javabean.User.delete", 10);
sqlSession.commit();
if (result > 0) {
System.out.println("删除成功");
}
sqlSession.close();
}
}
499




被折叠的 条评论
为什么被折叠?



