简介:
该增删改查操作实现方式是以持久层接口的代理类的方式,具体的实现代码如下:
1、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="mysql_CRUD">
<environment id="mysql_CRUD">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="sqlMapper/MyBatisSql_CRUD.xml"></mapper>
</mappers>
</configuration>
2、SQL映射文件(增删该查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="myBatis.dao.IUserCRUDDao">
<!-- 查询所有用户信息,返回值为User的Model类型 -->
<select id="queryAllUser" resultType="Model.UserCRUDModel">
select * from user
</select>
<!-- 新增用户信息: 参数类型为User的Model类,values中的占位符要与Model中的参数保持一致-->
<insert id="InsertUser" parameterType="Model.UserCRUDModel">
insert into user (username,sex,address,birthday) values(#{username},#{sex},#{address},#{birthday})
</insert>
<!-- 更新操作:占位符要求与insert中的一致 -->
<update id="UpdateUser">
update user set username = #{username}, address = #{address} where id = #{id}
</update>
<!-- 根据用户ID删除用户:此处参数为int类型的唯一变量,因此在SQL中的占位符可以随意命名 -->
<delete id="DeleteUserById" parameterType="Integer">
delete from user where id = #{uId}
</delete>
</mapper>
2.1、插入数据是的扩展–获取新增数据中的自增的主键id值
<!-- 新增用户信息: 参数类型为User的Model类,values中的占位符要与Model中的参数保持一致-->
<insert id="InsertUser" parameterType="Model.UserCRUDModel">
<!--selectKey获取插入后的id值,id在表中为主键,自增-->
<selectKey keyProperty="id" resultType="int" order="AFTER">
select last_insert_id();
</selectKey>
insert into user (username,sex,address,birthday) values(#{username},#{sex},#{address},#{birthday})
</insert>
selectKey标签中keyProperty属性是实体类中的主键字段,order属性值为AFTER表示在insert执行之后再执行,resultType表示返回值类型。
3、操作表的封装类;
package Model;
import java.util.Date;
public class UserCRUDModel {
private Integer id;
private String username;
private String address;
private char sex;
private Date birthday;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "UserCRUDModel{" +
"id=" + id +
", username='" + username + '\'' +
", address='" + address + '\'' +
", sex=" + sex +
", birthday=" + birthday +
'}';
}
}
4、持久层接口:
package myBatis.dao;
import Model.UserCRUDModel;
import java.util.List;
/**
* 持久层接口
*/
public interface IUserCRUDDao {
/**
* 查询所有用户
*/
List<UserCRUDModel> queryAllUser();
/**
* 新增用户
*/
void InsertUser(UserCRUDModel user);
/**
* 更新用户信息
*/
void UpdateUser(UserCRUDModel user);
/**
* 通过用户id删除用户
*/
void DeleteUserById(int userId);
}
5、测试类的编写:
package myBatisDemo;
import Model.UserCRUDModel;
import myBatis.dao.IUserCRUDDao;
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.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
public class userCRUDTest {
InputStream in=null;
SqlSessionFactoryBuilder ssfb = null;
SqlSessionFactory ssf = null;
SqlSession ss = null;
IUserCRUDDao iuCRUD;
//初始化操作
@Before //Junit注解,在@Test之前运行
public void init() throws IOException {
in = Resources.getResourceAsStream("myBatis_CRUD.xml");
ssfb = new SqlSessionFactoryBuilder();
ssf = ssfb.build(in);
ss = ssf.openSession();
iuCRUD = ss.getMapper(IUserCRUDDao.class);
}
//释放资源,在@Tes之后运行
@After
public void close() throws IOException {
ss.commit();//提交操作,此处要注意设置,此处默认没有自动提交
ss.close();
in.close();
}
/**
* 查询操作
*/
@Test
public void queryAllUser(){
List<UserCRUDModel> list = iuCRUD.queryAllUser();
for ( UserCRUDModel userModel : list) {
System.out.println(userModel);
}
}
/**
* 新增用户
*/
@Test
public void saveUser(){
UserCRUDModel userModel = new UserCRUDModel();
userModel.setUsername("新增用户2");
userModel.setAddress("你猜");
userModel.setBirthday(new Date());
userModel.setSex('女');
iuCRUD.InsertUser(userModel);
}
/**
* 更新用户信息
*/
@Test
public void updateUser(){
UserCRUDModel userModel = new UserCRUDModel();
userModel.setId(50);
userModel.setUsername("新增用户2");
userModel.setAddress("我们不猜");
userModel.setBirthday(new Date());
userModel.setSex('女');
iuCRUD.UpdateUser(userModel);
}
/**
* 删除操作
*/
@Test
public void deleteUser(){
iuCRUD.DeleteUserById(50);
}
}
以上为MyBatis的学习随笔。