对实体类的CRUD操作
来源:互联网 发布:float在c语言中的意思 编辑:程序博客网 时间:2024/06/03 11:10
--------------------siwuxie095
对实体类的 CRUD 操作
1、创建数据库和表
(1)创建一个MySQL 连接:mybatis_conn
(2)创建一个数据库:mybatis_db,其中:字符集 和 排序规则
可不选,图中显示即为默认值
(3)在mybatis_db 数据库中创建一张表:t_user,其中:uid 为主键,
且设为自动增长
(4)在t_user 表中插入若干数据
2、创建实体类
User.java:
package com.siwuxie095.entity;
//实体类
public class User {
private Integer uid;
private String username;
private String password;
private String address;
public Integer getUid() {
return uid;
}
publicvoid setUid(Integer uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
publicvoid setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
publicvoid setPassword(String password) {
this.password = password;
}
public String getAddress() {
return address;
}
publicvoid setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return"User [uid=" + uid +", username=" + username +
", password=" + password +", address=" + address +"]";
}
}
3、创建MyBatis 映射配置文件
UserMapper.xml:
<?xmlversion="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属性:命名空间,由于这里没有使用
MyBatis的动态代理,所以不需要遵循任何规范,
可任意,唯一即可
-->
<mappernamespace="demo">
<!--
select标签:配置映射查询语句
id属性:在当前命名空间中的唯一标识符
parameterType属性:指定参数的 Java类型,进行参数映射
resultType属性:指定返回结果的 Java类型,进行结果映射
注:parameterType属性是可选的,即可以不写,将自动进行参数映射
-->
<selectid="getUser"parameterType="java.lang.Integer"resultType="com.siwuxie095.entity.User">
<!--
具体的 SQL语句,其中:通过 #{}占位符获取传入的参数
注意:因为这里只有一个参数,所以大括号中可任意,建议
和实体类属性对应(不是和数据库表字段对应,这里相同只
是巧合)
-->
select * from t_user where uid = #{uid}
</select>
<!--
注意:
1、返回结果是 List<> 时,resultType指定为 List<>中包含的对象类型
2、parameterType本来就是可选的
-->
<selectid="listUser"resultType="com.siwuxie095.entity.User">
select * from t_user
</select>
<!--
insert标签:配置映射插入语句
注意:由于这里在数据库中已经将 uid 设为自增,所以 uid处传入 null
-->
<insertid="saveUser"parameterType="com.siwuxie095.entity.User">
<!--注意:实际上这里依然是只有一个参数,那就是 User对象 -->
insert into t_user (uid, username, password, address) values (null, #{username}, #{password}, #{address})
</insert>
<!--
update标签:配置映射更新语句
注意:由于这里在数据库中已经将 uid 设为自增,所以 uid不用更新
-->
<updateid="updateUser"parameterType="com.siwuxie095.entity.User">
update t_user set username=#{username}, password=#{password}, address=#{address} where uid=#{uid}
</update>
<!--
delete标签:配置映射删除语句
-->
<deleteid="removeUser"parameterType="java.lang.Integer">
delete * from t_user where uid=#{uid}
</delete>
</mapper>
4、创建映射器接口及其实现类
UserMapper.java:
package com.siwuxie095.mapper;
import java.util.List;
import com.siwuxie095.entity.User;
public interface UserMapper {
public User getUser(int uid);
public List<User> listUser();
publicvoid saveUser(User user);
publicvoid updateUser(User user);
publicvoid removeUser(int uid);
}
UserMapperImpl.java:
package com.siwuxie095.mapper.impl;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.siwuxie095.entity.User;
import com.siwuxie095.mapper.UserMapper;
/**
*这里没有使用 MyBatis动态代理,直接实现了 UserMapper接口
*
*本来 UserMapper.xml被建议放在映射器接口所在包下,即 UserMapper.java
*所在包下,但这里实现了 UserMapper接口,所以就将 UserMapper.xml放在
*了映射器接口实现类所在包下,即当前包下
*
*注意:在调用映射语句时,通过 namespace.id来调用
*/
public class UserMapperImplimplements UserMapper {
private SqlSession sqlSession;
public UserMapperImpl(SqlSession sqlSession) {
this.sqlSession=sqlSession;
}
@Override
public User getUser(int uid) {
return sqlSession.selectOne("demo.getUser", uid);
}
@Override
public List<User> listUser() {
return sqlSession.selectList("demo.listUser");
}
@Override
publicvoid saveUser(User user) {
sqlSession.insert("demo.saveUser", user);
}
@Override
publicvoid updateUser(User user) {
sqlSession.update("demo.updateUser", user);
}
@Override
publicvoid removeUser(int uid) {
sqlSession.delete("demo.removeUser", uid);
}
}
5、创建MyBatis 核心配置文件
mybatis-config.xml:
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- configuration根标签 -->
<configuration>
<!--
第一部分:配置环境
配置环境(environments):包括事务管理和连接池
environments标签其中可以添加多个 environment标签,
即多个环境
default属性表示默认环境(从配置的多个环境选一个)
-->
<environmentsdefault="development">
<environmentid="development">
<!--配置事务管理器 -->
<transactionManagertype="JDBC"/>
<!--配置数据源:这里使用 MyBatis内置连接池 -->
<dataSourcetype="POOLED">
<propertyname="driver"value="com.mysql.jdbc.Driver"/>
<!--
jdbc:mysql://localhost:3306/mybatis_db可省略为 jdbc:mysql:///mybatis_db
-->
<propertyname="url"value="jdbc:mysql:///mybatis_db"/>
<propertyname="username"value="root"/>
<propertyname="password"value="8888"/>
</dataSource>
</environment>
</environments>
<!--
第二部分:其它配置
由于这个例子很简单,没什么好配置的 ... 所以就不配置
-->
<!--
第三部分:引入映射配置文件
由于这个例子比较的简单,所以就没有创建映射器接口,也就没有所谓
的映射器接口所在包,这里将 UserMapper.xml 直接放在 src下,
而不是像建议的那样放在映射器接口所在包下
-->
<mappers>
<mapperresource="com/siwuxie095/mapper/impl/UserMapper.xml"/>
</mappers>
<!--
注意:
这三部分的配置顺序并不是这里的第一部分、第二部分、第三部分的顺序
关于 MyBatis核心配置文件中的配置顺序,可参照如下链接中从上至下的
标签顺序
http://www.mybatis.org/mybatis-3/zh/configuration.html
-->
</configuration>
6、测试:对实体类的CRUD 操作
MyBatisTest.java:
package com.siwuxie095.test;
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.siwuxie095.entity.User;
import com.siwuxie095.mapper.UserMapper;
import com.siwuxie095.mapper.impl.UserMapperImpl;
public class MyBatisTest {
/**
*单个查询操作
*
*手动加上 @Test以进行单元测试(将自动导入 JUnit 4的 jar包)
*
*选中方法名,右键->Run As->JUint Test
*/
@Test
publicvoid testGet()throws IOException {
/*
*第一步:加载 MyBatis核心配置文件
*
*直接到 src下查找 mybatis-config.xml文件
*/
String resource="mybatis-config.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
/*
*第二步:创建 SqlSessionFactory对象
*
*通过 SqlSessionFactoryBuilder匿名对象调用 build()方法进行创建
*/
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
/*
*第三步:使用 SqlSessionFactory创建 SqlSession对象
*
*调用 sqlSessionFactory的 openSession()方法进行创建
*/
SqlSession sqlSession=sqlSessionFactory.openSession();
/*
*第四步:编写具体的逻辑:CRUD操作
*
*调用 userMapper的 getUser()方法实现单个查询
*/
UserMapper userMapper=new UserMapperImpl(sqlSession);
User user=userMapper.getUser(1);
System.out.println(user);
/*
*第五步:提交事务
*
*注意:这里是查,所以跳过提交事务这一步
*/
/*
*第六步:关闭资源
*
*关闭 SqlSession会话
*/
sqlSession.close();
}
/**
*批量查询操作
*/
@Test
publicvoid testList()throws IOException {
/*
*第一步:加载 MyBatis核心配置文件
*
*直接到 src下查找 mybatis-config.xml文件
*/
String resource="mybatis-config.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
/*
*第二步:创建 SqlSessionFactory对象
*
*通过 SqlSessionFactoryBuilder匿名对象调用 build()方法进行创建
*/
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
/*
*第三步:使用 SqlSessionFactory创建 SqlSession对象
*
*调用 sqlSessionFactory的 openSession()方法进行创建
*/
SqlSession sqlSession=sqlSessionFactory.openSession();
/*
*第四步:编写具体的逻辑:CRUD操作
*
*调用 userMapper的 listUser()方法实现批量查询
*/
UserMapper userMapper=new UserMapperImpl(sqlSession);
List<User> list=userMapper.listUser();
for (User user : list) {
System.out.println(user);
}
/*
*第五步:提交事务
*
*注意:这里是查,所以跳过提交事务这一步
*/
/*
*第六步:关闭资源
*
*关闭 SqlSession会话
*/
sqlSession.close();
}
/**
*添加操作
*/
@Test
publicvoid testSave()throws IOException {
/*
*第一步:加载 MyBatis核心配置文件
*
*直接到 src下查找 mybatis-config.xml文件
*/
String resource="mybatis-config.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
/*
*第二步:创建 SqlSessionFactory对象
*
*通过 SqlSessionFactoryBuilder匿名对象调用 build()方法进行创建
*/
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
/*
*第三步:使用 SqlSessionFactory创建 SqlSession对象
*
*调用 sqlSessionFactory的 openSession()方法进行创建
*/
SqlSession sqlSession=sqlSessionFactory.openSession();
/*
*第四步:编写具体的逻辑:CRUD操作
*
*调用 userMapper的 saveUser()方法实现添加
*/
UserMapper userMapper=new UserMapperImpl(sqlSession);
User user=new User();
user.setUsername("小强");
user.setPassword("4444");
user.setAddress("美国");
userMapper.saveUser(user);
/*
*第五步:提交事务
*/
sqlSession.commit();
/*
*第六步:关闭资源
*
*关闭 SqlSession会话
*/
sqlSession.close();
}
/**
*修改操作
*/
@Test
publicvoid testUpdate()throws IOException {
/*
*第一步:加载 MyBatis核心配置文件
*
*直接到 src下查找 mybatis-config.xml文件
*/
String resource="mybatis-config.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
/*
*第二步:创建 SqlSessionFactory对象
*
*通过 SqlSessionFactoryBuilder匿名对象调用 build()方法进行创建
*/
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
/*
*第三步:使用 SqlSessionFactory创建 SqlSession对象
*
*调用 sqlSessionFactory的 openSession()方法进行创建
*/
SqlSession sqlSession=sqlSessionFactory.openSession();
/*
*第四步:编写具体的逻辑:CRUD操作
*
*调用 userMapper的 updateUser()方法实现修改
*/
UserMapper userMapper=new UserMapperImpl(sqlSession);
User user=userMapper.getUser(1);
user.setPassword("1111");
userMapper.updateUser(user);
/*
*第五步:提交事务
*/
sqlSession.commit();
/*
*第六步:关闭资源
*
*关闭 SqlSession会话
*/
sqlSession.close();
}
/**
*删除操作
*/
@Test
publicvoid testRemove()throws IOException {
/*
*第一步:加载 MyBatis核心配置文件
*
*直接到 src下查找 mybatis-config.xml文件
*/
String resource="mybatis-config.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
/*
*第二步:创建 SqlSessionFactory对象
*
*通过 SqlSessionFactoryBuilder匿名对象调用 build()方法进行创建
*/
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
/*
*第三步:使用 SqlSessionFactory创建 SqlSession对象
*
*调用 sqlSessionFactory的 openSession()方法进行创建
*/
SqlSession sqlSession=sqlSessionFactory.openSession();
/*
*第四步:编写具体的逻辑:CRUD操作
*
*调用 userMapper的 removeUser()方法实现删除
*/
UserMapper userMapper=new UserMapperImpl(sqlSession);
userMapper.removeUser(1);
/*
*第五步:提交事务
*/
sqlSession.commit();
/*
*第六步:关闭资源
*
*关闭 SqlSession会话
*/
sqlSession.close();
}
}
工程结构目录一览:
【made by siwuxie095】
- hibernate 对实体类的crud操作
- 对实体类的CRUD操作
- 对实体类的CRUD操作
- jpa对单个实体bean的crud操作
- EJB+JPA演示实体类基本操作CRUD的实现
- EJB+JPA演示实体类基本操作CRUD的实现
- 传智播客--JPA的CRUD操作,映射实体
- JPA的CRUD操作,映射实体
- T4 生成实体和简单的CRUD操作
- LINQ对数据库的CRUD操作
- c语言对数组的操作CRUD
- jdbc对数据库的CRUD操作
- Hibernate对单表的CRUD操作
- 解决Hibernate 实体类之间CRUD的代码冗余
- 引擎底层对实体方位的操作
- jpa+spring对实体的crud和实现分页功能的简单实用的封装
- 同过使用C3P0建立的对mysql数据库CRUD操作的工具类
- 自定义类封装数组,并对数组进行CRUD操作;有序数组的实习与查找
- MyBatis配置数据源的两种方式
- 第四章:表达式和运算符
- 对linux内核、用户空间、内核态、用户态的理解
- jqurey常用方法(jqurey设计思想)
- 【安全牛学习笔记】http响应状态码大全
- 对实体类的CRUD操作
- mysql
- 网络编程-BIO、NIO、AIO
- 文章标题
- Linux笔记(4)_网络设置
- React Native沿交叉轴的对其方式
- 两个理解KMP的博文
- mycat权威指南-读书笔记
- Qt Windows 打包发布 (一)