Web framework之Mybatis3

来源:互联网 发布:mac rar解压软件 编辑:程序博客网 时间:2024/06/07 05:16
Mybatis中文文档,参见其官网:http://mybatis.github.io/mybatis-3/zh/index.html

首先,建立PostgreSQL数据库(desktop)的数据表(admin),其结构如下图所示:

然后,用Eclipse建立Java Project,将mybatis和postgresql的jar库导入进来。
再按照下图所示,建立配置文件(configuration.xml),映射文件(admin.xml),以及java文件。

configuration.xml

[html] view plaincopy在CODE上查看代码片派生到我的代码片
  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.     <settings>  
  7.         <setting name="cacheEnabled" value="true" />  
  8.     </settings>  
  9.     <typeAliases>  
  10.         <!--给实体类起一个别名 user -->  
  11.         <typeAlias alias="Admin" type="PO.Admin" />  
  12.     </typeAliases>  
  13.     <!--数据源配置 这块用 BD2数据库 -->  
  14.     <environments default="development">  
  15.         <environment id="development">  
  16.             <transactionManager type="jdbc" />  
  17.             <dataSource type="POOLED">  
  18.                 <property name="driver" value="org.postgresql.Driver" />  
  19.                 <property name="url"  
  20.                     value="jdbc:postgresql://127.0.0.1:5432/desktop?charSet=utf-8" />  
  21.                 <property name="username" value="postgres" />  
  22.                 <property name="password" value="gjs@y1" />  
  23.             </dataSource>  
  24.         </environment>  
  25.     </environments>  
  26.     <mappers>  
  27.         <!--userMapper.xml装载进来 同等于把“dao”的实现装载进来 -->  
  28.         <mapper resource="config/admin.xml" />  
  29.     </mappers>  
  30. </configuration>     

admin.xml

[html] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8" ?>    
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"    
  3.     "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  4. <!--这块等于dao接口的实现 namespace必须和接口的类路径一样 -->  
  5. <mapper namespace="DAO.AdminDao">  
  6.     <!--type是在configuration.xml里定义过的typeAlias -->  
  7.     <resultMap id="AdminResult" type="Admin">  
  8.         <result column="id" property="id" jdbcType="INTEGER" />  
  9.         <result column="username" property="username" jdbcType="VARCHAR" />  
  10.         <result column="password" property="password" jdbcType="VARCHAR" />  
  11.         <result column="create_time" property="createTime" jdbcType="TIMESTAMP" />  
  12.     </resultMap>  
  13.   
  14.     <insert id="addAdmin" parameterType="Admin" useGeneratedKeys="true" keyProperty="id">  
  15.         insert into  
  16.         admin(username,password,create_time)  
  17.         values(#{username},#{password},now())  
  18.     </insert>  
  19.     <update id="updateAdmin" parameterType="Admin">  
  20.         update admin set  
  21.         username=#{username:VARCHAR},password=#{password:VARCHAR} where  
  22.         id=#{id:INTEGER}  
  23.     </update>  
  24.     <select id="findAdmin" parameterType="int" resultMap="AdminResult">  
  25.         select *  
  26.         from admin where id = #{id:INTEGER}  
  27.     </select>  
  28.     <delete id="deleteAdmin" parameterType="int">  
  29.         delete  
  30.         from admin where  
  31.         id=#{id:INTEGER}  
  32.     </delete>  
  33.     <select id="countAdmin" resultType="int">  
  34.         select count(*) from admin  
  35.     </select>  
  36.     <select id="listAdmin" resultMap="AdminResult">  
  37.         select * from admin order by id  
  38.     </select>  
  39. </mapper>    
AdminDao.java
[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package DAO;  
  2.   
  3. import java.util.List;  
  4.   
  5. import PO.Admin;  
  6.   
  7. public interface AdminDao {  
  8.     public Integer addAdmin(Admin user);  
  9.   
  10.     public boolean updateAdmin(Admin user);  
  11.   
  12.     public boolean deleteAdmin(Integer Id);  
  13.   
  14.     public Admin findAdmin(Integer Id);  
  15.   
  16.     public int countAdmin();  
  17.   
  18.     public List<Admin> listAdmin();  
  19. }  
Admin.java
[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package PO;  
  2.   
  3. import java.util.Date;  
  4.   
  5. public class Admin {  
  6.     private Integer id;  
  7.     private String username;  
  8.     private String password;  
  9.     private Date createTime;  
  10.   
  11.     public Integer getId() {  
  12.         return id;  
  13.     }  
  14.   
  15.     public void setId(Integer id) {  
  16.         this.id = id;  
  17.     }  
  18.   
  19.     public String getUsername() {  
  20.         return username;  
  21.     }  
  22.   
  23.     public void setUsername(String username) {  
  24.         this.username = username;  
  25.     }  
  26.   
  27.     public String getPassword() {  
  28.         return password;  
  29.     }  
  30.   
  31.     public void setPassword(String password) {  
  32.         this.password = password;  
  33.     }  
  34.   
  35.     public Date getCreateTime() {  
  36.         return createTime;  
  37.     }  
  38.   
  39.     public void setCreateTime(Date createTime) {  
  40.         this.createTime = createTime;  
  41.     }  
  42.   
  43.     @Override  
  44.     public String toString() {  
  45.         return "Admin [id=" + id + ", username=" + username + ", password="  
  46.                 + password + ", createTime=" + createTime + "]";  
  47.     }  
  48. }  
test.java
[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package test;  
  2.   
  3. import java.io.Reader;  
  4. import java.util.List;  
  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. import DAO.AdminDao;  
  12. import PO.Admin;  
  13.   
  14. /** 
  15.  * myBatis数据库连接测试 
  16.  */  
  17. public class test {  
  18.     /** 
  19.      * 获得MyBatis SqlSessionFactory, SqlSessionFactory负责创建SqlSession, 
  20.      * 一旦创建成功,就可以用SqlSession实例来执行映射语句,commit,rollback,close等方法 
  21.      */  
  22.     public static void main(String[] args) throws Exception {  
  23.         Reader reader = Resources.getResourceAsReader("configuration.xml");  
  24.         SqlSessionFactoryBuilder ssfBuilder = new SqlSessionFactoryBuilder();  
  25.         SqlSessionFactory sqlSessionFactory = ssfBuilder.build(reader);  
  26.         SqlSession sqlSession = sqlSessionFactory.openSession();  
  27.         AdminDao adminDao = sqlSession.getMapper(AdminDao.class);  
  28.   
  29.         Admin admin = new Admin();  
  30.         admin.setUsername("gaojs");  
  31.         admin.setPassword("123");  
  32.         Integer aRet = adminDao.addAdmin(admin);  
  33.         System.out.println("addAdmin, aRet:" + aRet);  
  34.         System.out.println("addAdmin:" + admin);  
  35.   
  36.         Admin found = adminDao.findAdmin(admin.getId());  
  37.         System.out.println("findAdmin:" + found);  
  38.   
  39.         found.setPassword("1234");  
  40.         boolean uRet = adminDao.updateAdmin(found);  
  41.         System.out.println("updateAdmin, uRet:" + uRet);  
  42.         Admin found2 = adminDao.findAdmin(admin.getId());  
  43.         System.out.println("findAdmin:" + found2);  
  44.   
  45.         int count = adminDao.countAdmin();  
  46.         System.out.println("countAdmin, count:" + count);  
  47.   
  48.         List<Admin> list = adminDao.listAdmin();  
  49.         System.out.println("listAdmin, list:" + list);  
  50.   
  51.         boolean dRet = adminDao.deleteAdmin(admin.getId());  
  52.         System.out.println("deleteAdmin:" + dRet);  
  53.   
  54.         sqlSession.commit();  
  55.         sqlSession.close();  
  56.     }  
  57. }  

运行测试,发现确实能插入数据!其他接口,也都能正常实现其功能。

[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. addAdmin, aRet:1  
  2. addAdmin:Admin [id=57, username=gaojs, password=123, createTime=null]  
  3. findAdmin:Admin [id=57, username=gaojs, password=123, createTime=Fri Oct 31 17:47:39 CST 2014]  
  4. updateAdmin, uRet:true  
  5. findAdmin:Admin [id=57, username=gaojs, password=1234, createTime=Fri Oct 31 17:47:39 CST 2014]  
  6. countAdmin, count:1  
  7. listAdmin, list:[Admin [id=57, username=gaojs, password=1234, createTime=Fri Oct 31 17:47:39 CST 2014]]  
  8. deleteAdmin:true  
0 0
原创粉丝点击