基于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); /** *根据用户名模糊查询用户 */ List findUsersByName(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{ List userList=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(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。