• Mybatis实现


    简介  

      MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

    项目实践

    工程截图:

    准备工作:

    mybatis-3.2.7.jar
    mysql-connector-java-5.1.20-bin.jar

    数据库表设计:

    user类:

     1 public class User {
     2 
     3     private int id;
     4     private String name;
     5     private String sex;
     6     
     7     public int getId() {
     8         return id;
     9     }
    10     public void setId(int id) {
    11         this.id = id;
    12     }
    13     public String getName() {
    14         return name;
    15     }
    16     public void setName(String name) {
    17         this.name = name;
    18     }
    19     public String getSex() {
    20         return sex;
    21     }
    22     public void setSex(String sex) {
    23         this.sex = sex;
    24     }
    25     
    26     @Override
    27     public String toString() {
    28         // TODO Auto-generated method stub
    29         return "{" + id + "," + name + "," + sex + "}";
    30     }
    31 }

    userMapper.xml

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     3 <!-- 
     4     为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
     5      例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀)
     6 -->
     7 <mapper namespace="me.gacl.mapping.userMapper">
     8 <!-- 
     9     在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复
    10     使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
    11     resultType="me.gacl.domain.User"就表示将查询结果封装成一个User类的对象返回
    12     User类就是users表所对应的实体类
    13 -->
    14 <!-- 
    15     根据id查询得到一个user对象
    16 -->
    17     <select id="getUsers" parameterType="int" 
    18         resultType="cn.mybatis.model.User">
    19         select * from user
    20     </select>
    21     
    22     <select id="getUser" parameterType="int" 
    23         resultType="cn.mybatis.model.User">
    24         select * from user where id=#{id}
    25     </select>
    26 </mapper>

    conf.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
     3 <configuration>
     4     <environments default="development">
     5         <environment id="development">
     6             <transactionManager type="JDBC" />
     7             <!-- 配置数据库连接信息 -->
     8             <dataSource type="POOLED">
     9                 <property name="driver" value="com.mysql.jdbc.Driver" />
    10                 <property name="url" value="jdbc:mysql://localhost:3306/user" />
    11                 <property name="username" value="root" />
    12                 <property name="password" value="123456" />
    13             </dataSource>
    14         </environment>
    15     </environments>
    16     
    17     <mappers>
    18         <!-- 注册userMapper.xml文件, 
    19         userMapper.xml位于cn/mybatis/mapping这个包下,所以resource写成cn/mybatis/mapping/userMapper.xml-->
    20         <mapper resource="cn/mybatis/mapping/userMapper.xml"/>
    21     </mappers> 
    22 </configuration>

    Test.java

     1 package cn.mybatis.test;
     2 
     3 import java.io.IOException;
     4 import java.io.InputStream;
     5 import java.util.ArrayList;
     6 import java.util.List;
     7 
     8 import org.apache.ibatis.session.SqlSession;
     9 import org.apache.ibatis.session.SqlSessionFactory;
    10 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    11 
    12 import cn.mybatis.model.User;
    13 
    14 public class Test {
    15      public static void main(String[] args) throws IOException {
    16             //mybatis的配置文件
    17             String resource = "conf.xml";
    18             //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
    19             InputStream is = Test.class.getClassLoader().getResourceAsStream(resource);
    20             //构建sqlSession的工厂
    21             SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
    22             //使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
    23             //Reader reader = Resources.getResourceAsReader(resource); 
    24             //构建sqlSession的工厂
    25             //SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
    26             //创建能执行映射文件中sql的sqlSession
    27             SqlSession session = sessionFactory.openSession();
    28             /**
    29              * 映射sql的标识字符串,
    30              * me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
    31              * getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
    32              */
    33             String selectAll = "me.gacl.mapping.userMapper.getUsers";//映射sql的标识字符串
    34            
    35             //执行查询返回一个表的所有信息
    36             List<User> users = new ArrayList<User>();
    37             users = session.selectList(selectAll);
    38             System.out.println(users);
    39             
    40             String selectOne = "me.gacl.mapping.userMapper.getUser";//映射sql的标识字符串
    41             
    42             //执行查询一个表的所有信息
    43             User user = new User();
    44             user.setId(5);
    45             user = session.selectOne(selectOne, user.getId());
    46             System.out.println(user);        
    47         }
    48 }

    运行结果

  • 相关阅读:
    mac下通过复制启动两个tomcat
    搭建一个redis集群
    ubantu系统下永久修改主机名
    民宿项目知识_截取最后一个逗号
    民宿项目知识_string判断是否为空
    民宿项目知识_enum
    民宿项目中的知识点_动态删除tr
    笔记:迁移来自xinlang的笔记
    SVN使用笔记
    iOS性能优化笔记
  • 原文地址:https://www.cnblogs.com/K-artorias/p/7403372.html
Copyright © 2020-2023  润新知