(三)使用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     }

 

posted @ 2017-06-26 11:04  kika  阅读(361)  评论(0编辑  收藏  举报