MyBatis的增删改查
MyBatis的增删改查
-
这几天也是在学习Android,所以也一直没时间给学习过的MyBatis写一些笔记。啊~刚好今天星期三网课就只有上午,所以也就来给前面刚入门的MyBatis总结总结。
我们首先需要创建一个java项目,并且导入相应的mybatis与MySQL的jar包
- mybatis(jar包)提取码:h56t
- mysql(jar包)提取码:1ytt
下载后直接导入项目中就可以了(那么派对开始~)
-
创建一个存放数据的POJO包(这里我创建了一个User类)
public class User {
private int uid;
private String uname;
private String usex;
private int uage;
private int tel;
public User() {
super();
}
public User(int uid, String uname, String usex, int uage, int tel) {
super();
this.uid = uid;
this.uname = uname;
this.usex = usex;
this.uage = uage;
this.tel = tel;
}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUsex() {
return usex;
}
public void setUsex(String usex) {
this.usex = usex;
}
public int getUage() {
return uage;
}
public void setUage(int uage) {
this.uage = uage;
}
public int getTel() {
return tel;
}
public void setTel(int tel) {
this.tel = tel;
}
@Override
public String toString() {
return "User [uid=" + uid + ", uname=" + uname + ", usex=" + usex + ", uage=" + uage + ", tel=" + tel + "]";
}
}
-
然后创建存放sql映射文件的Mapper包(这里我创建了一个UserMappe的XML文件)
-
这前面的格式就是固定的写法,所以不用太纠结了~
-
这里的namespace的内容最好是包路径+pojo包名+Mapper名
-
里面的sql语句当然不一定只能一条,如select,insert,update,delete都是一样的,只不过只有查询需要返回结果,其他的都是不需要的(这里着重说明一下~)
<?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="mapper.UserMapper">
<select id="selectUsers" resultType="pojo.User">
select * from user
</select>
</mapper>
-
映射文件创建好后,我们还需要创建一个存放配置文件的Config包(这里我创建了一个mybatis的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地址/数据库名" />
<property name="username" value="账号" />
<property name="password" value="密码" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- mappers读取sql映射文件 -->
<mapper resource="mapper/DeptMapper.xml" />
</mappers>
</configuration>
-
那么最后我们来写一下刚刚弄好查询语句的测试类(这里我创建了一个Demo01的类)
package test;
import java.io.IOException;
import java.lang.annotation.Annotation;
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 pojo.User;
public class Demo01 {
public static void main(String[] args) {
selects();//这里我为了简洁,封装了方法~ 直接调用不爽吗
}
public static void selects() {
SqlSession session = null;//创建session的全局实例
try {
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis.xml"));//这里就是获取我们刚刚写过的配置文件
session = build.openSession();//将会开启一个事务
List<User> list = session.selectList("selectUsers", null);//这里我们使用集合来接收
for (User user : list) {
System.out.println(user);//循环打印控制台
}
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} finally {
if (session != null) {//最后在finally块中关闭session流
session.close();
}
}
}
}
写到这是不是感觉与标题的增删改查有些不一样,确实。但当学会了查询过后,增删改就不遥远了,我们只需要在原有文件中加入几行代码就可以实现需求。这里我就简单的添加一下,然后我们来看一下效果(这里记得着重看添加的代码)
-
在原有的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="mapper.UserMapper">
<insert id="insertUser" parameterType="pojo.User">
insert into dept(deptno,dname,loc) values (#{deptno},#{dname},#{loc})
</insert>
<update id="updateUser" parameterType="pojo.User">
update dept set loc = #{loc} where deptno = #{deptno}
</update>
<delete id="deleteUser" parameterType="int">
delete from dept where deptno = #{id}
</delete>
<select id="selectUser" parameterType="int"
resultType="pojo.User">
select * from dept where deptno = #{id}
</select>
<!-- 如果返回的是一个对象的集合,resultType写集合里面对象的类路径List<Dept> -->
<select id="selectUsers" resultType="pojo.User">
select * from user
</select>
</mapper>
-
由于我们都只是在原有的UserMapper文件中添加数据,所以这里我们并不需要改动原有的配置文件(mybatis.xml),只需要在测试类中加入增删改的测试代码就行啦
public class Demo1 {
public static void main(String[] args) {
// insert();
// update();
// delete();
// select();
selectList();
}
public static void selectList() {
SqlSession session = null;
try {
// 获取SqlSessionFactory,也是读取配置文件
SqlSessionFactory build = new SqlSessionFactoryBuilder()
.build(Resources.getResourceAsReader("mybatis.xml"));
// 读取SqlSession
session = build.openSession();
List<User> users = session.selectList("selectUsers", null);
for (User user : users) {
System.out.println(user);
}
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} finally {
if (session != null) {
session.close();
}
}
}
public static void select() {
SqlSession session = null;
try {
// 获取SqlSessionFactory,也是读取配置文件
SqlSessionFactory build = new SqlSessionFactoryBuilder()
.build(Resources.getResourceAsReader("mybatis.xml"));
// 读取SqlSession
session = build.openSession();
User user = session.selectOne("selectUser", 50);// 查询一条语句
System.out.println(user);
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} finally {
if (session != null) {
session.close();
}
}
}
public static void delete() {
SqlSession session = null;
try {
// 获取SqlSessionFactory,也是读取配置文件
SqlSessionFactory build = new SqlSessionFactoryBuilder()
.build(Resources.getResourceAsReader("mybatis.xml"));
// 读取SqlSession
session = build.openSession();
session.update("deleteUser", 50);
// 提交事务
session.commit();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} finally {
if (session != null) {
session.close();
}
}
}
public static void update() {
SqlSession session = null;
try {
// 获取SqlSessionFactory,也是读取配置文件
SqlSessionFactory build = new SqlSessionFactoryBuilder()
.build(Resources.getResourceAsReader("mybatis.xml"));
// 读取SqlSession
session = build.openSession();
Dept dept = new Dept(50, null, "九江");
session.update("mapper.DeptMapper.updateDept", dept);
// 提交事务
session.commit();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} finally {
if (session != null) {
session.close();
}
}
}
public static void insert() {
SqlSession session = null;
try {
// 获取SqlSessionFactory,也是读取配置文件
SqlSessionFactory build = new SqlSessionFactoryBuilder()
.build(Resources.getResourceAsReader("mybatis.xml"));
// 读取SqlSession
session = build.openSession();
User user = new User(50, "张皓鹏", "江西");
session.insert("insertUser", user);
// 提交事务
session.commit();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} finally {
if (session != null) {
session.close();
}
}
}
}
写到这 MyBatis的基础使用的总结就写完啦~ 一开始使用的JDBC顿时就不香了。。这么少代码量多舒服,对吧 哈哈~
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
大雄先生!
喜欢就支持一下吧