Mybatis简单例子

tanli_0908

贡献于2012-03-14

字数:10913 关键词: MyBatis3 持久层框架

 整理By fly 一、Mybatis 简单例子 (TestIbatits) 1、搭建框架,添加 mybatis mysql 的jar ,这里是 mybatis-3.0.2.jar 2、添加 sqlMapConfig.xml 这里 导入 下面的 3 步 3、添加UserMapper.xml insert into t_user (us_name,us_password) values (#{name},#{password}) update t_user set us_name=#{name} where us_id=#{id#{}中的类容必须与实体对应 } 4、编写user类 package cn.com.entity; public class User { private int id; private String name; private String password; } 5、初始化 用于初始化SqlSessionFactory public class GetSqlSessionFactory { private static SqlSessionFactory sqlSessionFactory = null; private static GetSqlSessionFactory getSqlSessionFactory = null; private GetSqlSessionFactory(){ String rs = "cn/com/config/sqlMapConfig.xml"; Reader reader = null; try { reader = Resources.getResourceAsReader(rs); } catch (IOException e) { e.printStackTrace(); } sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); } public static GetSqlSessionFactory getInstance(){ if(getSqlSessionFactory == null){ getSqlSessionFactory = new GetSqlSessionFactory(); } return getSqlSessionFactory; } public SqlSessionFactory getSqlSessionFactory() { return sqlSessionFactory; } } 6、编写DAO (接口 省) public class DealUserDAOImpl implements IDealUserDAO{ public User getvalue(int id) throws Exception{ SqlSession session = GetSqlSessionFactory.getInstance().getSqlSessionFactory().openSession(); User user = null; try { /* UserMapper userMapper = session.getMapper(UserMapper.class); user = userMapper.selectById(id);*/ user = (User) session.selectOne("UserMapper.selectById", id);// 为第三步中配置文件中的select // id } catch (Exception e) { e.printStackTrace(); } finally { session.close(); } return user; } public void insertvalue(User user) { SqlSession session = GetSqlSessionFactory.getInstance().getSqlSessionFactory().openSession(); try { session.insert("insertvalues", user);// 为第三步中配置文件中的insert session.commit(); // id } catch (Exception e) { e.printStackTrace(); } finally { session.close(); } } public void updatevalue(int id, String username) { SqlSession session = GetSqlSessionFactory.getInstance().getSqlSessionFactory().openSession(); User user = new User(); user.setId(id); user.setName(username); try { session.update("updatevalue", user);// 为第三步中配置文件中的update session.commit(); // id } catch (Exception e) { e.printStackTrace(); } finally { session.close(); } } } 7、测试 public class TestMain { public static void main(String[] args) { IDealUserDAO dealUserDAO = new DealUserDAOImpl(); User user = new User(); user.setName("lsi2345678901"); user.setPassword("123"); try { //增加 dealUserDAO.insertvalue(user); //查询 user = dealUserDAO.getvalue(1); System.out.println("查询的结果" + user.getName()); //修改 dealUserDAO.updatevalue(2, "yu22222222"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 2、自动生成 的 工具 1、创建数据库 user(us_id,us_name,us_password) 2、创建工程,引入jar包 3、运行 generator自动生成 的 jar包 先创建config.xml
这个配置文件提供了 mybatis-generator所需要的参数信息:   * 其中classPathEntry 是引用的jdbc的类路径,这里将jdbc jar和generator的jar包放在一起了;   * commentGenerator 是用来除去时间信息的,这在配合类似subversion的代码管理工具时使用很有效,因为可以减少没有必要的注释迁入;   * jdbcConnection是指定的jdbc的连接信息;   * javaTypeResolver式类型转换的信息,这里并没有用到;   * javaModelGenerator是模型的生成信息,这里将指定这些Java model类的生成路径;   * sqlMapGenerator是mybatis 的sqlMapper XML文件的生成信息,包括生成路径等;   * javaClientGenerator是应用接口的生成信息;   * table是用户指定的被生成相关信息的表,它必须在指定的jdbc连接中已经被建立。 然后 在dos 窗口,进入lib,目录,运行 命令 java -jar mybatis-generator-core-1.3.0.jar -configfile ../src/cn/com/config/config.xml -overwrite   4、可以看到生成了这么多文件 在自动生成的 代码中,UserMapper是一个接口,这样可以 方便在 代码中调用SQL语句 UserMapper mapper = sqlSession.getMapper(UserMapper.class); List allRecords = mapper.selectByExample(user); 5、在cn.com.config 下 添加sqlMapConfig.xml 6、接下来就可以测试了 public class TestMain { public static void main(String[] args) throws Exception { String resource = "cn/com/config/sqlMapConfig.xml"; Reader reader = Resources.getResourceAsReader(resource); SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader); SqlSession sqlSession = sqlMapper.openSession(); UserExample user = new UserExample(); /*user.or().andDeathIsNotNull(); user.or().and*/ try { UserMapper mapper = sqlSession.getMapper(UserMapper.class); List allRecords = mapper.selectByExample(user); for (User s : allRecords) System.out.println(s.getUsName()); } finally { sqlSession.close(); } } } 7、结果 三、一对一 (个人表 和 身份证表) 1、建立数据库 t_person(ps_id,ps_name,ps_password ,ps_cd_id) idCard(cd_id,cd_card_number,cd_address) 2、编写实体 public class Person { private int id; private String name; private String password; private IDCard idCard; } public class IDCard { private Person person; private int id; private String number; private String address; } 2、配置映射文件 PersonMapper.xml 3、编写接口 (注意 这个接口 要和 上面的XML 在同一个包下,并且名字要一样) package cn.com.config; import cn.com.entity.Person; public interface PersonMapper { public Person selectById(int id); } 4、配置sqlMapConfig.xml 5、编写获得sqlSessionFactory的方法 6、测试代码 public class TestMain { public static void main(String[] args) { SqlSession session = GetSqlSessionFactory.getInstance().getSqlSessionFactory().openSession(); PersonMapper personMapper = session.getMapper(PersonMapper.class); Person person = personMapper.selectById(2); // Person person = (Person)session.selectOne("cn.com.config.PersonMapper.selectById", 2); System.out.println("姓名:" + person.getName()); System.out.println("身份证号码:" + person.getIdCard().getNumber()); session.close(); } } 四、 一对多 (部门表 和 员工表) 1、数据库 t_dept(dp_id,dp_name,dp_desc) t_person(ps_id,ps_name,ps_password,ps_dept_Id) 2、编写 实体 public class Dept { private int id; private String name; private String desc; private List persons = new ArrayList(); } public class Person { private int id; private String name; private String password; private IDCard idCard; } 3、编写映射 DeptMapper.xml 4、同一个文件夹下面别写 接口 public interface DeptMapper { public Dept findPersonByDeptID(int id); } 5、sqlMapConfig.xml 和 GetSqlSessionFatory.java 6、测试 public class TestMain { /** * @param args */ public static void main(String[] args) { SqlSession session = GetSqlSessionFactory.getInstance().getSqlSessionFactory().openSession(); DeptMapper deptMapper = session.getMapper(DeptMapper.class); Dept dept = deptMapper.findPersonByDeptID(1); // Person person = (Person)session.selectOne("cn.com.config.PersonMapper.selectById", 2); List persons = dept.getPersons(); System.out.println("部门名称 " + dept.getName()); Person person = null; for(int i=0;i

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享文档获得金币 ]
10 人已下载

下载文档

相关文档