本文主要介绍怎么配置Mybatis,适合零基础的朋友,我会尽量写的详细点,如果有错误的地方,还请大神们指教,我也是个小菜鸟。
首先我用的工具是Eclipse,数据库是MySQL(oracle也可以参照此文配置),Mybatis3.0.4,废话不多说,开始配置。
假设有一张user表(userid,username,password),我们要做一个登录功能,也就是根据username和password查找一条记录。
第一步,建立一个项目,导入Mybatis的jar包,web项目记得放到lib文件夹里。
第二步,建立一个User类。
package com.test.dto; public class User { private int userid; private String username; private String password; public int getUserid() { return userid; } public void setUserid(int userid) { this.userid = userid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
第三步,配置mybatis.cfg.xml这个文件,并且将这个xml文件放在src的下面。
<?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> <typeAliases> <!--这里用来注册javabean,type要用包名+类名,alias是给这个javabean起的别名,以后用到这个 javabean的时候可以用别名来代替,别名可以任意格式,但是我们还是用一些规范格式比较好--> <typeAlias type="com.test.dto.User" alias="User" /> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <!--驱动--> <property name="driver" value="com.mysql.jdbc.Driver" /> <!--3306是mysql默认端口号,testweb是数据库名--> <property name="url" value="jdbc:mysql://localhost:3306/testweb" /> <!--mysql的用户名和密码--> <property name="username" value="root" /> <property name="password" value="123456" /> </dataSource> </environment> </environments> <mappers> <!--这里先空着,一会还有配置信息填写--> <mapper resource=""/> </mappers> </configuration>
第四步,写一个sqlsession类,方便我们调用。
package com.test.util; import java.io.Reader; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MyBatisSqlSession { private static MyBatisSqlSession myBatisSqlSession = new MyBatisSqlSession(); private SqlSessionFactory factory; private MyBatisSqlSession(){ try{ String resource = "mybatis.cfg.xml"; Reader reader = Resources.getResourceAsReader(resource); factory = new SqlSessionFactoryBuilder().build(reader); }catch(Exception e){ e.printStackTrace(); } } public static MyBatisSqlSession getMyBatisSqlSession() { return myBatisSqlSession; } public SqlSession getSqlSession(){ return factory.openSession(); } public void closeSqlSession(SqlSession sqlSession){ if(sqlSession!=null){ sqlSession.close(); } } }
第五步,写一个接口以及实现该接口的方法,这个借口里写的是对user操作的一些方法,比如增删改查,这里我们写一个login方法。
接口:
package com.test.dao.user; import com.test.dto.User; public interface UserDao { public User login(User user); }
类(以后要添加方法的时候一定要先在接口中添加,再在类中实现):
package com.test.dao.user; import org.apache.ibatis.session.SqlSession; import com.test.dto.User; import com.test.util.MyBatisSqlSession; public class UserDaoImpl implements UserDao { private MyBatisSqlSession myBatisSqlSession = MyBatisSqlSession.getMyBatisSqlSession(); SqlSession sqlSession = null; @Override public User login(User user) { try{ sqlSession = myBatisSqlSession.getSqlSession(); return sqlSession.getMapper(UserDao.class).login(user); }catch(Exception e){ e.printStackTrace(); }finally{ myBatisSqlSession.closeSqlSession(sqlSession); } return null; } }
第六步,建立UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" " <!--这里是映射到接口文件--> <mapper namespace="com.test.dao.user.UserDao"> <!--select表示这个sql语句是查询语句,增加删除修改同理,大家自己探索吧,id是要和接口里的方法名相同, 也就是你要调用的那个方法,resultType就是返回的类型,login方法里我们返回的是User类,所以这里返回类 型是User类,值得一提的是,此处的User就是mybatis.cfg.xml里的User,注意大小写!--> <select id="login" resultType="User"> <!--这个就是平常的sql语句,#{username}代表login方法传进来的那个user参数里的username属性, #{password}也是一样,没有分号。--> SELECT * FROM user WHERE username = #{username} and password = #{password} </select> </mapper>
第七步,回到mybatis.cfg.xml,补充配置文件
<mappers> <!--补上这段话,我将UserMapper.xml文件放在com.test.dao.user下面,这样方便查找,比较规范--> <mapper resource="com/caichao/web/dao/user/UserMapper.xml"/> </mappers>
第八步,用junit开始测试吧,没有的话直接写个jsp测试吧,测试前先把xml里的中文备注都删了,再检查下是否导入驱动
@Test public void testLogin(){ User user = new User(); user.setUsername("a1"); user.setPassword("123"); User u = this.login(user); System.out.println(u.getUserid()+"\t"+u.getUsername()+"\t"+u.getPassword()); }
这是一个中规中矩的MyBatis的配置过程,很多朋友都没有第五步以及和第五步相关的一些操作,这个各有各的写法吧,对于新手,我还是觉得这样配置使用是比较好的,这篇文章是结合我平时的使用总结的过程,有不足不对或者需要改进的地方,请大神们指点一二。