您的位置:首页 > 数据库

(1).Mybatis简单入门:对数据库进行CRUD操作

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

使用Mybatis操作数据库,进行CRUD操作常用步骤如下:

1.使用Eclipse创建普通java工程,src下新建folder起名lib,添加mybatis和mysql驱动的jar包;

选中包,右键,build path —> add to build path 添加到项目构建路径.



2.在MySQL数据库中创建数据库mybatis1,创建数据表users,语句如下:

create table users(
id int(5) primary key auto_increment,
name varchar(20),
phone varchar(11),
email varchar(50)
) charset=utf8


添加测试数据:

insert into users(name, phone, email) values("aa","13411111111","aa@163.com");
insert into users(name, phone, email) values("bb","13422222222","bb@163.com");
insert into users(name, phone, email) values("cc","13433333333","cc@126.com");
insert into users(name, phone, email) values("dd","13444444444","dd@126.com");


查询如下:



3.在src下新建mybatis-cfg.xml配置文件,配置mybatis的配置文件,如下:

<?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="dev"><!-- 可以配置多个环境environment的子标签,此处必须指定一个默认的环境 -->
<environment id="dev">
<transactionManager type="jdbc" />
<dataSource type="pooled">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!-- 添加参数characterEncoding=utf-8解决访问数据库的乱码 -->
<property name="url" value="jdbc:mysql:///mybatis1?characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
</configuration>


4.在包com.qcc.entity下创建实体类User,提供private属性,公有的get/set方法,以及toString()方法.

package com.qcc.entity;

public class User {
private int id;
private String name;
private String phone;
private String email;
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 getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", phone=" + phone
+ ", email=" + email + "]";
}
}


5.在包com.qcc.mapping下新建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,namespace一般设置成包名+当前sql映射的文件名,去掉后缀名 -->
<mapper namespace="com.qcc.mapping.userMapper">
<!-- id值必须唯一,否则mybatis不知道你要执行重名的哪一个sql语句-->
<select id="getUser" parameterType="int" resultType="com.qcc.entity.User">
select id, name, phone, email fro
df4d
m users where id = #{id}  <!-- 用#{}来替换调用语句中传入的参数 -->
</select>
<select id="getAll" resultType="com.qcc.entity.User">
select id, name, phone, email from users
</select>
</mapper>


6.在mybatis-cfg.xml文件中注册userMapper.xml文件,写在configuration下的mappers标签中,此时mybatis的配置文件完整内容如下:

<?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="dev"><!-- 可以配置多个环境environment的子标签,此处必须指定一个默认的环境 -->
<environment id="dev">
<transactionManager type="jdbc" />
<dataSource type="pooled">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///mybatis1?characterEncoding=utf-8"/><!-- 添加参数characterEncoding=utf-8解决访问数据库的乱码 -->
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<!--将映射文件在mybatis-cfg.xml中进行注册-->
<mappers>
<mapper resource="com/qcc/mapping/userMapper.xml"/>
</mappers>
</configuration>


7.为方便后续操作数据库,在包com.qcc.utils中新建一个工具类MybatisUtils,在里面进行读取mybatis-cfg.xml文件,并创建SqlSessionFactory,获取SqlSession对象

package com.qcc.utils;

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;

public class MybatisUtils {

private static SqlSessionFactory sessionFactory;

static {
try {
//          获取mybatis-cfg.xml文件对应的输入流两种方式:
//          InputStream is = MybatisUtils.class.getClassLoader().getResourceAsStream("mybatis-cfg.xml");
InputStream is = Resources.getResourceAsStream("mybatis-cfg.xml");
sessionFactory = new SqlSessionFactoryBuilder().build(is);
} catch (Exception e) {
throw new RuntimeException("读取配置文件失败!");
}
}

public static SqlSession getSession(boolean autoCommit){
return sessionFactory.openSession(autoCommit);
}
}


8.在包com.qcc.test下新建单元测试文件TestUser:

package com.qcc.test;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import com.qcc.entity.User;
import com.qcc.utils.MybatisUtils;

public class TestUser {
@Test
public void getAll() {
SqlSession session = MybatisUtils.getSession(false);//查询不涉及事务,因此传入false
//参数为映射sql的标示字符串,其值为userMapper.xml文件中的namespace加上对应的sql语句的id值.
List<User> userList = session.selectList("com.qcc.mapping.userMapper.getAll");
for (User user : userList) {
System.out.println(user);
}
}
@Test
public void get(){
SqlSession session = MybatisUtils.getSession(false);
User user = session.selectOne("com.qcc.mapping.userMapper.getUser", 1);//根据传入的id查询对应的实体对象
System.out.println(user);
}
@Test
public void add(){
SqlSession session = MybatisUtils.getSession(true);//参数若为true则会自动提交事务
User user = new User();
user.setName("ee");
user.setPhone("13512341234");
user.setEmail("ee@qq.com");
session.insert("com.qcc.mapping.userMapper.addUser",user);
}
@Test
public void update(){
SqlSession session = MybatisUtils.getSession(true);//参数若为true则会自动提交事务
User user = new User();
user.setId(5);
user.setName("update");
user.setPhone("13588888888");
user.setEmail("ee@163.com");
session.insert("com.qcc.mapping.userMapper.updateUser",user);
}
@Test
public void delete(){
SqlSession session = MybatisUtils.getSession(true);
session.delete("com.qcc.mapping.userMapper.delUser", 5);
}
}


项目的整个目录结构如下图:



至此,使用Mybatis操作数据库表进行简单的CRUD操作已经完成.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息