mybatis学习笔记(一)helloworld


新建项目(我使用的是maven项目)mybatis-study-01

一、加入mybatis与MySQL-connector依赖包到pom文件

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.   <modelVersion>4.0.0</modelVersion>  
  4.   
  5.   <groupId>mybatis</groupId>  
  6.   <artifactId>mybatis-study-01</artifactId>  
  7.   <version>0.0.1-SNAPSHOT</version>  
  8.   <packaging>jar</packaging>  
  9.   
  10.   <name>mybatis-01</name>  
  11.   <url>http://maven.apache.org</url>  
  12.   
  13.   <properties>  
  14.     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  15.   </properties>    
  16.   
  17.   <dependencies>  
  18.     <dependency>  
  19.       <groupId>junit</groupId>  
  20.       <artifactId>junit</artifactId>  
  21.       <version>4.10</version>  
  22.       <scope>test</scope>  
  23.     </dependency>  
  24.       
  25.     <dependency>  
  26.         <groupId>org.mybatis</groupId>  
  27.         <artifactId>mybatis</artifactId>  
  28.         <version>3.2.3</version>  
  29.     </dependency>  
  30.       
  31.     <dependency>   
  32.         <groupId>mysql</groupId>  
  33.         <artifactId>mysql-connector-java</artifactId>  
  34.         <version>5.1.27</version>  
  35.     </dependency>  
  36.               
  37.           
  38.   </dependencies>  
  39. </project>  


二、创建数据库mybatis-test

新建一张user表用于测试。建表sql如下:

  1. CREATE TABLE `user` (  
  2.   `id` int(11) NOT NULL auto_increment,  
  3.   `passwordvarchar(255) default NULL,  
  4.   `user_name` varchar(50) default NULL,  
  5.   `user_age` int(11) default NULL,  
  6.   `user_address` varchar(200) default NULL,  
  7.   PRIMARY KEY  (`id`),  
  8.   UNIQUE KEY `userName` (`user_name`)  
  9. ) EN  

插入一条数据

  1. INSERT INTO `userVALUES ('1''123131''summer''100''shanghai,pudong');  


三、在项目中编写pojo对象。

  1. package com.zf.mybatis.pojo;  
  2.   
  3. public class User {  
  4.   
  5.     private int id;  
  6.     private String password ;  
  7.     private String userName;  
  8.     private String userAge;  
  9.     private String userAddress;  
  10.   
  11.     public int getId() {  
  12.         return id;  
  13.     }  
  14.     public void setId(int id) {  
  15.         this.id = id;  
  16.     }  
  17.     public String getUserName() {  
  18.         return userName;  
  19.     }  
  20.     public void setUserName(String userName) {  
  21.         this.userName = userName;  
  22.     }  
  23.     public String getUserAge() {  
  24.         return userAge;  
  25.     }  
  26.     public void setUserAge(String userAge) {  
  27.         this.userAge = userAge;  
  28.     }  
  29.     public String getUserAddress() {  
  30.         return userAddress;  
  31.     }  
  32.     public void setUserAddress(String userAddress) {  
  33.         this.userAddress = userAddress;  
  34.     }  
  35.     public String getPassword() {  
  36.         return password;  
  37.     }  
  38.     public void setPassword(String password) {  
  39.         this.password = password;  
  40.     }  
  41.   
  42. }  

四、编写pojo对应的映射文件User.xml

  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.   
  5. <mapper namespace="com.zf.mybatis.pojo.UserMapper">  
  6.   
  7.     <!-- 使用sql标签可以将公共的sql提取出来复用 -->  
  8.     <sql id="queryFields">  
  9.       id , password , user_name as userName , user_age as userAge , user_address as userAddress  
  10.     </sql>  
  11.       
  12.     <select id="selectByID" parameterType="int" resultType="User">  
  13.         select   
  14.         <include refid="queryFields"/>   
  15.         from `user` where id = #{id}  
  16.     </select>  
  17.       
  18.     <insert id="add" parameterType="User" useGeneratedKeys="true" keyProperty="id" >  
  19.         insert into `user`  
  20.         (password , user_name , user_age , user_address)  
  21.         values(#{password} , #{userName} , #{userAge} , #{userAddress} )  
  22.     </insert>  
  23.       
  24.     <update id="update" parameterType="User" >  
  25.         update `user`  
  26.         set password = #{password} , user_name = #{userName}, user_age = #{userAge}, user_address =  #{userAddress}  
  27.         where id = #{id}  
  28.     </update>  
  29.       
  30.     <delete id="deleteById" parameterType="int">  
  31.         delete from `user` where id = #{id}  
  32.     </delete>  
  33.    
  34.       
  35. </mapper>  

注意:上面的namespace的值为com.zf.mybatis.pojo.UserMapper,可以自定义 ,UserMapper不是一个类,不需要存在的。 

另外,mybatis会将从数据库查询出来的记录根据列名与pojo中的字段进行匹配, 所以上面的user_name,user_age ,user_address这几个字段都取了别名,跟pojo中的字段相对应。 如果不起别名, 查询出来的对象,这几个字段是没有值的。


五、编写mybatis的配置文件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.   
  7.   <!-- 配置别名 -->  
  8.   <typeAliases>   
  9.        <typeAlias alias="User" type="com.zf.mybatis.pojo.User"/>   
  10.    </typeAliases>       
  11.   
  12.   <!-- 数据库配置信息 -->  
  13.   <environments default="development">  
  14.     <environment id="development">  
  15.       <transactionManager type="JDBC"/>  
  16.       <dataSource type="POOLED">  
  17.         <property name="driver" value="com.mysql.jdbc.Driver"/>  
  18.         <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis-test"/>  
  19.         <property name="username" value="root"/>  
  20.         <property name="password" value="root"/>  
  21.       </dataSource>  
  22.     </environment>  
  23.   </environments>  
  24.     
  25.   <!-- 映射文件 -->  
  26.   <mappers>  
  27.     <mapper resource="conf/User.xml"/>  
  28.   </mappers>  
  29. </configuration>  
在该配置文件中配置了数据库的链接方式,以及注册所有的映射文件,还可以设置mybatis的一些参数。


现在就可以编写测试类了。来测试一下。

  1. package com.zf.mybatis;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.Reader;  
  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. import org.junit.Before;  
  11. import org.junit.Test;  
  12.   
  13. import com.zf.mybatis.pojo.User;  
  14.   
  15. public class TestMyBatis {  
  16.       
  17.     private  SqlSessionFactory sqlSessionFactory;  
  18.     private  Reader reader;   
  19.   
  20.     @Before  
  21.     public void init(){  
  22.         try {  
  23.             reader  = Resources.getResourceAsReader("mybatis-config.xml");  
  24.             sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);  
  25.         } catch (IOException e) {  
  26.             e.printStackTrace();  
  27.         }  
  28.     }  
  29.       
  30.     @Test  
  31.     public void testQueryUser(){  
  32.         SqlSession session = sqlSessionFactory.openSession();  
  33.         try {  
  34.             User user = (User) session.selectOne("com.zf.mybatis.pojo.UserMapper.selectByID" ,1);  
  35.             System.out.println(user.getUserAddress());  
  36.             System.out.println(user.getUserName());  
  37.         } finally {  
  38.             session.close();  
  39.         }  
  40.     }  
  41.       
  42.     @Test  
  43.     public void testInsertUser(){  
  44.         SqlSession session = sqlSessionFactory.openSession();  
  45.         try {  
  46.             User user = new User() ;  
  47.             user.setUserName("abcde");  
  48.             user.setUserAge(15) ;  
  49.             user.setUserAddress("hangzhou/zhejiang");  
  50.             user.setPassword("123456");  
  51.             //返回值是记录条数  
  52.             int resultCount = session.insert("com.zf.mybatis.pojo.UserMapper.add", user );  
  53.             session.commit() ;  
  54.             System.out.printf("userID:%d,总记录条数:%d" , user.getId() , resultCount);  //获取插入对象的id  
  55.         } finally {  
  56.             session.close();  
  57.         }  
  58.     }  
  59.       
  60.     @Test  
  61.     public void testUpdateUser(){  
  62.         SqlSession session = sqlSessionFactory.openSession();  
  63.         try {  
  64.             User user = new User() ;  
  65.             user.setId(5) ;  
  66.             user.setUserName("updateName");  
  67.             user.setUserAge(101) ;  
  68.             user.setUserAddress("shenzhen/guangdong");  
  69.             user.setPassword("000000");  
  70.             //返回值是修改条数  
  71.             int updateCount = session.update("com.zf.mybatis.pojo.UserMapper.update", user );  
  72.             session.commit() ;  
  73.             System.out.printf("修改条数:%d" ,updateCount);    
  74.         } finally {  
  75.             session.close();  
  76.         }  
  77.     }  
  78.       
  79.     @Test  
  80.     public void testDelete(){  
  81.         SqlSession session = sqlSessionFactory.openSession();  
  82.         try {  
  83.             //返回值是删除条数  
  84.             int deleteCount = session.update("com.zf.mybatis.pojo.UserMapper.deleteById"4 );  
  85.             session.commit() ;  
  86.             System.out.printf("删除条数:%d" ,deleteCount );    
  87.         } finally {  
  88.             session.close();  
  89.         }  
  90.     }  
  91.       
  92.       
  93.       
  94.       
  95.       
  96.   
  97. }  


运行testQueryUser结果如下:

  1. shanghai,pudong  
  2. summer  
到此,一个mybatis的helloworld类型的小程序就出来了。


下载项目文件 mybatis-study-01.zip

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值