zoukankan      html  css  js  c++  java
  • (三)使用XML配置SQL映射器

    SqlSessionFactoryUtil.java

     1 package com.javaxk.util;
     2 
     3 import java.io.IOException;
     4 import java.io.InputStream;
     5 
     6 import org.apache.ibatis.io.Resources;
     7 import org.apache.ibatis.session.SqlSession;
     8 import org.apache.ibatis.session.SqlSessionFactory;
     9 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    10 
    11 public class SqlSessionFactoryUtil {
    12     
    13     private static SqlSessionFactory sqlSessionFactory;
    14     
    15     public static SqlSessionFactory getSqlSessinFactory() {
    16         
    17         if (sqlSessionFactory == null) {
    18             
    19             String resource = "mybatis-config.xml";
    20             InputStream inputStream = null;
    21             try {
    22                 inputStream = Resources.getResourceAsStream(resource);
    23             } catch (IOException e) {
    24                 // TODO Auto-generated catch block
    25                 e.printStackTrace();
    26             }
    27             sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
    28         }
    29         
    30         return sqlSessionFactory;
    31     }
    32     
    33     public static SqlSession openSession() {
    34         return getSqlSessinFactory().openSession();        
    35     }
    36 
    37 }

    Student.java

     1 package com.javaxk.model;
     2 
     3 public class Student {
     4     
     5     private int id;
     6     private String name;
     7     private int age;
     8     
     9     public Student() {
    10         super();
    11     }
    12     
    13     public Student(int id, String name, int age) {
    14         super();
    15         this.id = id;
    16         this.name = name;
    17         this.age = age;
    18     }
    19 
    20     public Student(String name, int age) {
    21         super();
    22         this.name = name;
    23         this.age = age;
    24     }
    25     public int getId() {
    26         return id;
    27     }
    28     public void setId(int id) {
    29         this.id = id;
    30     }
    31     public String getName() {
    32         return name;
    33     }
    34     public void setName(String name) {
    35         this.name = name;
    36     }
    37     public int getAge() {
    38         return age;
    39     }
    40     public void setAge(int age) {
    41         this.age = age;
    42     }
    43 
    44     @Override
    45     public String toString() {
    46         return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
    47     }
    48     
    49 }

    mybatis-config.xml

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE configuration
     3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     4 "http://mybatis.org/dtd/mybatis-3-config.dtd">
     5 <configuration>
     6     <!-- <properties resource="jdbc.properties"/> -->
     7     
     8     <properties>
     9         <property name="jdbc.driverClassName" value="com.mysql.jdbc.Driver"/>
    10         <property name="jdbc.url" value="jdbc:mysql://localhost:3306/db_mybatis?characterEncoding=utf-8"/>
    11         <property name="jdbc.username" value="root"/>
    12         <property name="jdbc.password" value="root"/>
    13     </properties>
    14     
    15     <!-- 
    16     <typeAliases>
    17         <typeAlias alias="Student" type="com.javaxk.model.Student"/>
    18     </typeAliases>
    19      -->
    20      
    21      <typeAliases>
    22          <package name="com.javaxk.model"/>
    23      </typeAliases>
    24      
    25     <environments default="development">
    26     
    27         <environment id="development">
    28             <transactionManager type="JDBC" />
    29             <dataSource type="POOLED">
    30                 <property name="driver" value="${jdbc.driverClassName}" />
    31                 <property name="url" value="${jdbc.url}" />
    32                 <property name="username" value="${jdbc.username}" />
    33                 <property name="password" value="${jdbc.password}" />
    34             </dataSource>
    35         </environment>
    36         
    37         <environment id="test">
    38             <transactionManager type="JDBC" />
    39             <dataSource type="POOLED">
    40                 <property name="driver" value="${jdbc.driverClassName}" />
    41                 <property name="url" value="${jdbc.url}" />
    42                 <property name="username" value="${jdbc.username}" />
    43                 <property name="password" value="${jdbc.password}" />
    44             </dataSource>
    45         </environment>
    46         
    47     </environments>
    48     
    49     <mappers>
    50     <!-- 
    51         <mapper resource="com/javaxk/mappers/StudentMapper.xml" />
    52     -->
    53         <package name="com.javaxk.mappers"/>
    54     </mappers>
    55 </configuration>

    StudentMapper.java

     1 package com.javaxk.mappers;
     2 
     3 import java.util.List;
     4 
     5 import com.javaxk.model.Student;
     6 
     7 public interface StudentMapper {
     8     
     9     public int add(Student student);
    10     
    11     public int update(Student student);
    12     
    13     public int delete(Integer id);
    14     
    15     public Student findById(Integer id);
    16     
    17     public List<Student> find();
    18 
    19 }

    StudentMapper.xml

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE mapper
     3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     5 <mapper namespace="com.javaxk.mappers.StudentMapper">
     6 
     7     <resultMap type="Student" id="StudentResult">
     8         <id property="id" column="id"/>
     9         <result property="name" column="name"/>
    10         <result property="age" column="age"/>
    11     </resultMap>
    12 
    13     <insert id="add" parameterType="Student"  >
    14         insert into t_student values(null,#{name},#{age})
    15     </insert>
    16     
    17     <update id="update" parameterType="Student">
    18         update t_student set name=#{name},age=#{age} where id=#{id} 
    19     </update>
    20     
    21     <delete id="delete" parameterType="Integer">
    22         delete from t_student where id=#{id}
    23     </delete>
    24     
    25     <select id="findById" parameterType="Integer" resultType="Student">
    26         select * from t_student where id=#{id}
    27     </select>
    28     
    29     <select id="find" resultMap="StudentResult">
    30         select * from t_student
    31     </select>
    32 
    33 </mapper> 

    所有的主测试类都在JUtil的测试方法前后中调用

     1 private static Logger logger = Logger.getLogger(StudentTest2.class);
     2      private SqlSession sqlSession = null;
     3      private StudentMapper studentMapper = null;
     4 
     5      /**
     6       * 测试方法前调用
     7       * @throws Exception
     8       */
     9     @Before
    10     public void setUp() throws Exception {
    11         sqlSession = SqlSessionFactoryUtil.openSession();
    12         studentMapper = sqlSession.getMapper(StudentMapper.class);
    13     }
    14 
    15     /**
    16      * 测试方法后调用
    17      * @throws Exception
    18      */
    19     @After
    20     public void tearDown() throws Exception {
    21         sqlSession.close();
    22     }

    第一节:insert映射语句

    添加映射配置文件

    1     <insert id="add" parameterType="Student"  >
    2         insert into t_student values(null,#{name},#{age})
    3     </insert>
    1     @Test
    2     public void testAdd() {
    3         logger.info("添加学生");
    4         Student student = new Student("小宁" ,88);
    5         studentMapper.add(student);
    6         sqlSession.commit();
    7         
    8     }

    第二节:update映射语句

    1     <update id="update" parameterType="Student">
    2         update t_student set name=#{name},age=#{age} where id=#{id} 
    3     </update>
    1     @Test
    2     public void testUpdate() {
    3         logger.info("更新学生");
    4         Student student = new Student(20,"小宁22",99);
    5         studentMapper.update(student);
    6         sqlSession.commit();
    7     }

    第三节:delete映射语句

    1     <delete id="delete" parameterType="Integer">
    2         delete from t_student where id=#{id}
    3     </delete>
    1     @Test
    2     public void testDelete() {
    3         logger.info("删除学生");
    4         studentMapper.delete(20);
    5         sqlSession.commit();
    6     }

    第四节:select映射语句

     (1)通过ID查找学生

    1     <select id="findById" parameterType="Integer" resultType="Student">
    2         select * from t_student where id=#{id}
    3     </select>
    1     @Test
    2     public void testFindById() {
    3         logger.info("通过ID查找学生");
    4         Student student=studentMapper.findById(1);
    5         System.out.println(student);
    6     }

    (2)查找所有学生

    1     <resultMap type="Student" id="StudentResult">
    2         <id property="id" column="id"/>
    3         <result property="name" column="name"/>
    4         <result property="age" column="age"/>
    5     </resultMap>
    6 
    7     <select id="find" resultMap="StudentResult">
    8         select * from t_student
    9     </select>
    1     @Test
    2     public void testFind() {
    3         logger.info("查找所有学生");
    4         List<Student> studentlist = studentMapper.find();
    5         for (Student s : studentlist) {
    6             System.out.println(s);
    7         }
    8     }
  • 相关阅读:
    MySQL链接超时的解决办法
    使用Axis开发Web Service程序
    Linux动态库(.so)搜索路径
    MYSQL性能调优简述
    什么是AXIS
    巧夺天工的kfifo
    双离合DSG
    实例讲解C# WebService
    如何为 MySQL 选择更合适的服务器硬件
    7 MySQL 事务与锁定命令
  • 原文地址:https://www.cnblogs.com/wishwzp/p/7079579.html
Copyright © 2011-2022 走看看