MyBatis框架操作数据库增删改查基本操作
需要配置一些xml等等,可以去MyBatis中文站点查看引导文档,复制下来修改部门内容即可使用
如有探讨请点击这里与我交流(^U^)ノ~YO
一、准备工作
1、创建maven项目后引入maven依赖
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
</dependencies>
2、在项目的资源目录下创建MyBatis的配置资源文件,文件命名都行,最终是xml文件即可,我用的命名为mybatis-conf.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>
<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://数据库ip地址:3306/你要操作的数据库名称"/>
<property name="username" value="你的数据库账号"/>
<property name="password" value="你的数据库密码"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 这里的xml映射文件均需要在资源文件目录下创建,并按照一点的规范格式进行内容编辑 -->
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
3、创建操作的表的映射xml文件,该xml文件命名对应mybatis-conf.xml>mappers>mapper的resource值,命名为:首字母大写的表名 + Mapper.xml,e.g.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="user">
<!-- 查 -->
<select id="select" parameterType="int" resultType="top.it1002.mybatis.domain.User">
select * from user where uid = #{uid}
</select>
<select id="selectAll" resultType="top.it1002.mybatis.domain.User">
select * from user
</select>
<!-- 改 -->
<update id="update" parameterType="top.it1002.mybatis.domain.User">
update user
<set>
<if test="age != null">age = #{age},</if>
<if test="name != null">name = #{name}</if>
</set>
where uid = #{uid}
</update>
<!-- 增 -->
<insert id="insert">
insert user(name, age) values(#{name}, #{age})
</insert>
<!-- 删 -->
<delete id="delete" parameterType="int">
delete from user where uid = #{uid}
</delete>
<delete id="deleteAll">
delete from user;
</delete>
</mapper>
二、编写操作类
1、User.java
package top.it1002.mybatis.domain;
/**
* @Author 王磊
* @Date 2019/3/14
* @ClassName User
* @Description 用户类
**/
public class User {
private int uid;
private String name;
private int age;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
2、UserDao.java
package top.it1002.mybatis.dao;
import org.apache.ibatis.session.SqlSession;
import top.it1002.mybatis.domain.MyBatisCallBack;
import top.it1002.mybatis.domain.User;
import java.util.List;
/**
* @Author 王磊
* @Date 2019/3/14
* @ClassName UserDao
* @Description 用户表封装Dao
**/
public class UserDao {
/**
* 插入
* @param user
*/
public static Object insert(User user){
UserDaoTemp.exec(new MyBatisCallBack() {
@Override
public Object exec(SqlSession ss) {
ss.insert("user.insert", user);
return null;
}
});
return null;
}
/**
* 查询单个
* @param uid
*/
public static User select(int uid){
return (User) UserDaoTemp.exec(new MyBatisCallBack() {
@Override
public Object exec(SqlSession ss) {
System.out.println(uid);
User user = ss.selectOne("user.select", uid);
return user;
}
});
}
/**
* 查询多个
*/
public static List<User> selectAll(){
return (List<User>)UserDaoTemp.exec(new MyBatisCallBack() {
@Override
public Object exec(SqlSession ss) {
List<User> userList = ss.selectList("user.selectAll");
return userList;
}
});
}
/**
* 修改
*/
public static Object update(User user){
UserDaoTemp.exec(new MyBatisCallBack() {
@Override
public Object exec(SqlSession ss) {
ss.update("user.update", user);
return null;
}
});
return null;
}
/**
* 删除一个
*/
public static Object delete(int uid){
UserDaoTemp.exec(new MyBatisCallBack() {
@Override
public Object exec(SqlSession ss) {
ss.delete("user.delete", uid);
return null;
}
});
return null;
}
/**
* 删除所有
*/
public static Object deleteAll(){
UserDaoTemp.exec(new MyBatisCallBack() {
@Override
public Object exec(SqlSession ss) {
ss.delete("user.deleteAll");
return null;
}
});
return null;
}
}
3、MyBatisUtil.java
package top.it1002.mybatis.Util;
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 java.io.IOException;
import java.io.InputStream;
/**
* @Author 王磊
* @Date 2019/3/14
* @ClassName MyBatisUtil
* @Description 工具类
**/
public class MyBatisUtil {
public static SqlSession getSession(){
try {
InputStream is = Resources.getResourceAsStream("mybatis-conf.xml");
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
return ssf.openSession();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static void rollbackTX(SqlSession ss){
if(ss != null){
ss.rollback();
}
}
public static void closeSession(SqlSession ss){
if(ss != null){
ss.close();
}
}
}
4、MyBatisCallBack .java
package top.it1002.mybatis.domain;
import org.apache.ibatis.session.SqlSession;
/**
* 回调接口
*/
public interface MyBatisCallBack {
public Object exec(SqlSession ss);
}
5、UserDaoTemp.java
package top.it1002.mybatis.dao;
import org.apache.ibatis.session.SqlSession;
import top.it1002.mybatis.Util.MyBatisUtil;
import top.it1002.mybatis.domain.MyBatisCallBack;
/**
* @Author 王磊
* @Date 2019/3/14
* @ClassName UserDaoTemp
* @Description 模板类
**/
public class UserDaoTemp {
public static Object exec(MyBatisCallBack callBack){
SqlSession ss = MyBatisUtil.getSession();
if(ss != null){
try{
return callBack.exec(ss);
}catch (Exception e){
MyBatisUtil.rollbackTX(ss);
}finally {
MyBatisUtil.closeSession(ss);
}
}
return null;
}
}
6、App.java
import top.it1002.mybatis.dao.UserDao;
import top.it1002.mybatis.domain.User;
import java.util.List;
/**
* @Author 王磊
* @Date 2019/3/14
* @ClassName App
* @Description 调用类
**/
public class App {
public static void main(String[] args) {
/*/
// 插入测试
User user = new User();
user.setAge(18);
user.setName("admin");
UserDao.insert(user);
//*/
/*/
// 查询测试1
int uid = 1;
User user1 = UserDao.select(uid);
if(user1 != null){
System.out.println("UserUid:" + user1.getUid());
System.out.println("UserName:" + user1.getName());
System.out.println("UserAge:" + user1.getAge());
}else {
System.out.println("单个数据查询数据结果为空!");
}
//*/
/*/
// 查询测试2
List<User> userList = UserDao.selectAll();
for(User user2 : userList){
System.out.println("=== 用户:" + user2.getName() + "的个人信息 ===");
System.out.println("UserUid:" + user2.getUid());
System.out.println("UserName:" + user2.getName());
System.out.println("UserAge:" + user2.getAge());
}
//*/
/*/
// 修改测试
User user3 = new User();
user3.setUid(1);
user3.setName("it1002.top");
user3.setAge(22);
UserDao.update(user3);
//*/
/*/
// 删除测试1
int uid2 = 2;
UserDao.delete(uid2);
//*/
}
}
最终关闭调用类的注释即可进行操作
以下为数据库语句:
create table user(
uid int primary key auto_increment,
name varchar(10) not null,
age int not null
) charset utf8;