基于Mybatis实现CRUD操作过程解析(xml方式)
1、环境搭建
1.1表结构
createtableuser( idintprimarykeyauto_increment, usernamevarchar(20)notnull, birthdaydate, sexchar(1)default'男', addressvarchar(50) ); insertintouservalues(null,'孙悟空','1980-10-24','男','花果山水帘洞'); insertintouservalues(null,'白骨精','1992-11-12','女','白虎岭白骨洞'); insertintouservalues(null,'猪八戒','1983-05-20','男','福临山云栈洞'); insertintouservalues(null,'蜘蛛精','1995-03-22','女','盤丝洞');
1.2创建项目
导入如下jar
- mybatis框架包
- 数据库驱动包
- log4j日志包
- junit单元测试包
1.3准备配置文件
在src下准备配置文件:sqlMapConfig.xml
在src下准备配置文件:log4j.properties
#Globalloggingconfiguration
log4j.rootLogger=DEBUG,stdout#Consoleoutput...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p[%t]-%m%n
2-增删改查源码
1.1执行结果
1.2User类代码
importjava.sql.Date;
/**
用户实体类对象*/
publicclassUser{
privateIntegerid;
privateStringusername;
privateDatebirthday;
privateStringsex;
privateStringaddress;
publicUser(){
}
publicUser(Integerid,Stringusername,Datebirthday,Stringsex,Stringaddress){
this.id=id;
this.username=username;
this.birthday=birthday;
this.sex=sex;
this.address=address;
}
publicIntegergetId(){
returnid;
}
publicvoidsetId(Integerid){
this.id=id;
}
publicStringgetUsername(){
returnusername;
}
publicvoidsetUsername(Stringusername){
this.username=username;
}
publicDategetBirthday(){
returnbirthday;
}
publicvoidsetBirthday(Datebirthday){
this.birthday=birthday;
}
publicStringgetSex(){
returnsex;
}
publicvoidsetSex(Stringsex){
this.sex=sex;
}
publicStringgetAddress(){
returnaddress;
}
publicvoidsetAddress(Stringaddress){
this.address=address;
}
@Override
publicStringtoString(){
return"User{"+
"id="+id+
",username='"+username+'\''+
",birthday="+birthday+
",sex='"+sex+'\''+
",address='"+address+'\''+
'}';
}
}
1.3UserMapper接口代码
packagecom.vg.dao;
importcom.vg.entity.User;
importorg.apache.ibatis.annotations.Param;
importjava.util.List;
/**
*数据访问层接口:对用户进行增删改查操作
*/
publicinterfaceUserMapper{
/**
*添加用户
*/
intaddUser(Useruser);
/**
*根据id删除用户
*/
voiddeleteUser(Integerid);
/**
*通过id修改用户信息
*/
/**
*修改用户信息
*/
voidupdateUser(Useruser);
/**
*查询所有用户
*/
ListfindAllUsers();
/**
*根据id查询用户
*/
UserfindUserById(intid);
/**
*根据用户名模糊查询用户
*/
ListfindUsersByName(Stringusername);
/**
*根据姓名和性别查询用户数据(姓名使用模糊查询)
*/
/**
*根据用户名称模糊查询用户
*/
}
}
1.4UserMapper.xml接口映射文件
select*fromuser select*fromuserwhereid=#{id}; select*fromuserwhereusernamelike#{username} insertintouservalues(null,#{username},#{birthday},#{sex},#{address}); updateusersetusername=#{username}, birthday=#{birthday},sex=#{sex},address=#{address} whereid=#{id} deletefromuserwhereid=#{id}
1.5在主配置文件中加载接口映射文件
1.6测试类代码
packagecom.vg.test;
importcom.vg.dao.UserMapper;
importcom.vg.entity.User;
importorg.apache.ibatis.io.Resources;
importorg.apache.ibatis.session.SqlSession;
importorg.apache.ibatis.session.SqlSessionFactory;
importorg.apache.ibatis.session.SqlSessionFactoryBuilder;
importorg.junit.After;
importorg.junit.Before;
importorg.junit.BeforeClass;
importorg.junit.Test;
importjava.io.IOException;
importjava.io.InputStream;
importjava.sql.Date;
importjava.util.List;
/**
*测试类
*/
publicclassTestUserMapper{
privatestaticSqlSessionFactorysqlSessionFactory=null;
privateSqlSessionsqlSession=null;
privateUserMapperuserMapper=null;
//该方法在所有测试方法执行之前执行1次
@BeforeClass
publicstaticvoidinit()throwsException{
//1.通过Resources类,加载sqlMapConfig.xml,得到文件输入流对
InputStreamin=Resources.getResourceAsStream("sqlMapConfig.xml");
//2.实例化会话工厂创建类SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilderbuilder=newSqlSessionFactoryBuilder();
//3.根据字节输入流获取SqlSessionFactory对象
sqlSessionFactory=builder.build(in);
}
//该方法会在每个测试方法执行之前执行1次
@Before
publicvoidbefore(){
//4.获取SqlSession对象,等价连接对象
//true:事务自动提交,false:不自动提交,默认值
sqlSession=sqlSessionFactory.openSession();
//5.创建接口实现类对象
userMapper=sqlSession.getMapper(UserMapper.class);
}
/**
*测试方法:通过用户名模糊查询用户
*/
@Test
publicvoidtestAddUser()throwsException{
//1.获得接口代理对象
UserMapperuserMapper=sqlSession.getMapper(UserMapper.class);
//2.创建User对象
Useru=newUser();
u.setUsername("如来佛祖111");
u.setBirthday(Date.valueOf("1980-01-20"));
u.setAddress("西天灵山");
u.setSex("男");
//3.保存用户信息
introw=userMapper.addUser(u);
System.out.println("row="+row);
//4.手动提交事务
sqlSession.commit();
}
/**
*测试方法:通过用户名模糊查询用户
*/
@Test
publicvoidtestFindUserByName()throwsException{
ListuserList=userMapper.findUsersByName("%精%");
for(Useruser:userList){
System.out.println(user);
}
}
/**
*测试方法:查询所有用户
*/
@Test
publicvoidtestFindAllUsers()throwsException{
ListuserList=userMapper.findAllUsers();
for(Useruser:userList){
System.out.println(user);
}
}
/**
*根据id查询用户
*@throwsException
*/
@Test
publicvoidtestFindUserById()throwsException{
//6.调用接口的方法根据id查询用户
Useruser=userMapper.findUserById(1);
System.out.println("user="+user);
}
@Test
publicvoidtestUpdateUser()throwsException{
//创建用户对象
Useruser=newUser(
6,
"牛魔王",
Date.valueOf("1998-02-20"),
"妖",
"牛魔洞");
//更新用户
userMapper.updateUser(user);
//提交事务
sqlSession.commit();
}
@Test
publicvoidtestDeleteUser()throwsException{
//1.获得接口代理对象
UserMapperuserMapper=sqlSession.getMapper(UserMapper.class);
//2.根据id删除用户
userMapper.deleteUser(6);
//3.提交事务
sqlSession.commit();
}
@After
publicvoidafter(){
//7.关闭会话,释放资源。
sqlSession.close();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。