单纯mybatis例子
环境:myeclipse+tomcat+mysql
需要包:mysql-connector-java-5.0.8-bin.jar,mybatis-3.1.1.jar
主要类目录结构:
需要建立类:
User.java:bean类,用于存储数据,作为持久性数据结构
UserMapper.java:接口类,注射方式,从数据库读取数据到相应接口
MyBatisUtil.java:工具类,主要通过session工程获取session
TestMybatis:测试类,通过调用配置方式,获取数据库数据
需要建立xml配置文件:
mybatis-config.xml:总配置mybatis文件
User.xml:bean类对应xml文件,书写各种sql语句来获取数据
各文件内容:
1 mybatis-config.xml内容:
<?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>
<!-- 定义的类的别名,同样作为引用,相当于一个持久化数据bean类 -->
<typeAliases>
<typeAlias alias="User" type="com.taikang.mybatis.User"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://10.136.16.161:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="admin"/>
</dataSource>
</environment>
</environments>
<!-- bean数据实体类对应需要操作的xml配置文件 -->
<mappers>
<mapper resource="resources/mappers/User.xml"/>
</mappers>
</configuration>
若服务器中有数据源配置,environments部分可以为:
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="JNDI">
<property name="initial_context" value="java:/comp/env"/>
<property name="data_source" value="jdbc/InsureDB"/>
</dataSource>
</environment>
</environments>
2 User.xml配置:
<?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="com.taikang.mybatis.UserMapper"> <!-- namespace必须是接口的路径, username 为User对象中 --> <select id="getUser" parameterType="String" resultType="User"> select * from table1 where username = #{username} </select> </mapper> 3 User的Bean类部分:
。。。public class User { private int id; private String username; private int age; private String addr; public User(){ super(); } public int getId() { return id; } public void setId(int id) { this.id = id; }
}
4 UserMapper.java类:
5 MyBatisUtil:工具类//mybatis使用到的接口 public interface UserMapper { // public void insertUser(User user); public User getUser(String name); public String getAddr(String name); }
6 TestMybatis:应用类import java.io.IOException; import java.io.Reader; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.apache.ibatis.io.Resources; public class MyBatisUtil { private static Log logger = LogFactory.getLog(MyBatisUtil.class); private static SqlSessionFactory factory; //用于单个提交的session private static SqlSession sqlSession = null; /* * 读取MyBatis配置文件,创建SqlSessionFactory */ public static SqlSessionFactory getFactory() throws Exception{ String resource = "mybatis-config.xml"; Reader reader = null; try { //FileInputStream is = new FileInputStream(path); //MyBatisTemplate temp = new MyBatisTemplate(); //String cl = temp.getPath(); reader = Resources.getResourceAsReader(resource); if(factory == null) factory = new SqlSessionFactoryBuilder().build(reader); return factory; } catch (Exception e) { logger.error("初始化MyBatis环境出错:" + e.getMessage()); throw e; }finally{ try { if(reader != null) reader.close(); } catch (IOException e) { logger.error("关闭MyBatis reader 出错:" + e.getMessage()); } } } /** * 获取SqlSession * @return * @throws Exception */ public static SqlSession getSqlSession() throws Exception{ if(sqlSession == null){ //getFactory().getConfiguration().addMapper(FunctionDAO.class); sqlSession = getFactory().openSession(); } //clearCache(); return sqlSession; } }
import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; public class TestMybatis { // static SqlSessionFactory sqlSessionFactory = null; // static{ // sqlSessionFactory = MyBatisUtil.getSqlSessionFactory(); // } public static void getUser() { SqlSession sqlSession = null; // SqlSession sqlSession = sqlSessionFactory.openSession(); try { sqlSession = MyBatisUtil.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User user = userMapper.getUser("feng"); System.out.println("info:" + user.getUsername() + " " + user.getAge() + " " + user.getAddr()); }catch(Exception e) { e.printStackTrace(); }finally { sqlSession.close(); } } } 7 写个main函数:MainTest
8 数据库设计:public class MainTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("start mybatis ..."); TestMybatis.getUser(); System.out.println("end mybatis ..."); } }
9 注意:
mybatis-config.xml文件和User.xml文件放在src的目录下边,在编译的时候将文件拷贝到web/web-inf/classes文件夹下,程序读取相对文件位置,
若放在文件目录其他位置,可能因找不到文件而报错