Mybatis入门程序

项目大致目录如下:

com.icsc.dao为Mybatis原始dao的开发。后面会和mapper代理的方法开发一起说。

1.创建数据库,表,测试连接(MySQL

  1. package com.icsc.jdbc;  
  2.   
  3. import java.sql.Connection;  
  4. import java.sql.DriverManager;  
  5. import java.sql.PreparedStatement;  
  6. import java.sql.ResultSet;  
  7.   
  8. /** 
  9.  * JDBC连接MySql数据库测试 
  10.  * @author W12179 
  11.  * 
  12.  */  
  13. public class JdbcTest {  
  14.   
  15.     public static void main(String[] args) {  
  16.         //1.准备参数  
  17.         //数据库连接  
  18.         Connection conn = null;  
  19.         //预编译的sql语句  
  20.         PreparedStatement pstm = null;  
  21.         //返回结果集  
  22.         ResultSet rs = null;  
  23.           
  24.         try {  
  25.             //2.加载驱动  
  26.             Class.forName("com.mysql.jdbc.Driver");  
  27.             //3.获取连接  
  28.             conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/sys?characterEncoding=utf-8","root","admin");  
  29.             //4.准备sql语句  
  30.             String sql = "SELECT * FROM USER WHERE ID = ?";  
  31.               
  32.             pstm = conn.prepareStatement(sql);  
  33.             //设置参数,从第一参数开始,  
  34.             pstm.setString(1"1");  
  35.             //5.执行预编译的sql语句,获取结果集  
  36.             rs = pstm.executeQuery();  
  37.             //6.操作结果集  
  38.             while(rs.next()){  
  39.                 System.out.println(rs.getString("id")+","+rs.getString("name")+","+rs.getString("sex"));  
  40.               
  41.             }  
  42.               
  43.         } catch (Exception e) {  
  44.             e.printStackTrace();  
  45.         }finally{  
  46.             try {  
  47.                 //7.依次释放资源,注意顺序  
  48.                 if(rs!=null){  
  49.                     rs.close();  
  50.                 }  
  51.                 if(pstm!=null){  
  52.                     pstm.close();  
  53.                 }  
  54.                 if(conn!=null){  
  55.                     conn.close();  
  56.                 }  
  57.             } catch (Exception e) {  
  58.                 e.printStackTrace();  
  59.             }  
  60.         }  
  61.           
  62.     }  
  63.   
  64. }  

能打印数据库对应的数据,则说明连接数据库成功。

2.加入jar包



3.创建log4j.properties

  1. log4j.rootLogger=DEBUG,Console  
  2. log4j.appender.Console=org.apache.log4j.ConsoleAppender  
  3. log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
  4. log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n  
  5. log4j.logger.org.apache=INFO  

4.创建Mybatis的SqlMapConfig.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.     与springMVC整合后,这部分由Spring管理,不需要写了。  
  8.     -->  
  9.     <environments default="development">  
  10.         <environment id="development">  
  11.             <transactionManager type="JDBC"/>  
  12.             <dataSource type="POOLED">  
  13.                 <property name="driver" value="com.mysql.jdbc.Driver"/>  
  14.                 <property name="username" value="root"/>  
  15.                 <property name="password" value="admin"/>  
  16.                 <property name="url" value="jdbc:mysql://localhost:3306/sys?characterEncoding=utf-8"/>  
  17.             </dataSource>  
  18.         </environment>  
  19.     </environments>  
  20.   
  21.     <!--引入mapper.xml -->  
  22.     <mappers>  
  23.         <mapper resource="sqlmap/User.xml"/>  
  24.     </mappers>  
  25. </configuration>  

5.创建实体类和对应的mapper.xml,以user为例

User.Java

  1. package com.icsc.entity;  
  2.   
  3. /** 
  4.  * 用户实体类 
  5.  * @author W12179 
  6.  * 
  7.  */  
  8. public class User {  
  9.       
  10.     private String name;  
  11.     private Integer sex;  
  12.     private Integer id;  
  13.       
  14.     public String getName() {  
  15.         return name;  
  16.     }  
  17.     public void setName(String name) {  
  18.         this.name = name;  
  19.     }  
  20.     public Integer getSex() {  
  21.         return sex;  
  22.     }  
  23.     public void setSex(Integer sex) {  
  24.         this.sex = sex;  
  25.     }  
  26.     public Integer getId() {  
  27.         return id;  
  28.     }  
  29.     public void setId(Integer id) {  
  30.         this.id = id;  
  31.     }  
  32.       
  33.     @Override  
  34.     public String toString() {  
  35.         return "User [name=" + name + ", sex=" + sex + ", id=" + id + "]";  
  36.     }  
  37.       
  38.       
  39.   
  40. }  

User.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.   
  6. <mapper namespace="test">  
  7.       
  8.     <!-- 根据id,查询一笔资料 -->  
  9.     <select id="findUserById" parameterType="int" resultType="com.icsc.entity.User">  
  10.         select * from user where id = #{id}  
  11.     </select>  
  12.     <!--  
  13.     #{}:表示一个占位符,也就是?,当里面的参数是简单数据类型的时候,可以是value,也可以是任意。  
  14.     ${}:表示字符串连接符号。当里面的参数是简单数据类型的时候,必须写成value  
  15.     resultType:表示输出单条记录的类型。  
  16.     parameterType:输入参数的类型  
  17.     -->  
  18.       
  19.     <!-- 根据name模糊查询 -->  
  20.     <select id="findUserByName" parameterType="String" resultType="com.icsc.entity.User">  
  21.         select * from user where name like '%${value}%'  
  22.     </select>  
  23.       
  24.     <!-- 新增资料 -->  
  25.     <insert id="insertUser" parameterType="com.icsc.entity.User">  
  26.         <!--  
  27.         获取自增主键。  
  28.         keyProperty:主键放入的属性。  
  29.         order:相对于insert语句的执行顺序。  
  30.         resultType:主键的返回类型  
  31.         -->  
  32.         <selectKey keyProperty="id" order="AFTER" resultType="int">  
  33.             select LAST_INSERT_ID()  
  34.         </selectKey>  
  35.         insert into user (name,sex) values(#{name},#{sex})  
  36.     </insert>  
  37.     <!--  
  38.     <insert id="insertUser" parameterType="com.icsc.entity.User">  
  39.         获取非自增主键。(UUID)  
  40.         keyProperty:主键放入的属性。  
  41.         order:相对于insert语句的执行顺序。  
  42.         resultType:主键的返回类型  
  43.         <selectKey keyProperty="id" order="BEFORE" resultType="String">  
  44.             select UUID()  
  45.         </selectKey>  
  46.         insert into user (id,name,sex) values(#{id},#{name},#{sex})  
  47.     </insert>-->  
  48.       
  49.     <!-- 根据id删除一笔资料 -->  
  50.     <delete id="deleteUser" parameterType="int">  
  51.         delete from user where id = #{id}  
  52.     </delete>  
  53.       
  54.     <!-- 根据id修改一笔资料 -->  
  55.     <update id="updateUser" parameterType="com.icsc.entity.User">  
  56.         update user set name = #{name},sex=#{sex} where id =#{id}  
  57.     </update>  
  58. </mapper>  

6.测试
  1. package com.icsc.MybatisFirst;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.apache.ibatis.io.Resources;  
  6. import org.apache.ibatis.session.SqlSession;  
  7. import org.apache.ibatis.session.SqlSessionFactory;  
  8. import org.apache.ibatis.session.SqlSessionFactoryBuilder;  
  9. import org.junit.Test;  
  10.   
  11. import com.icsc.entity.User;  
  12.   
  13. /** 
  14.  * 测试User.xml 
  15.  * @author W12179 
  16.  * 
  17.  */  
  18. public class MybatisFirst {  
  19.   
  20.     @Test  
  21.     public void findUserById() throws Exception{  
  22.         //获取sqlSessionFactory  
  23.         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("SqlMapConfig.xml"));  
  24.         //获取sqlSession,注意SqlSession是线程不安全的,要定义在方法里  
  25.         SqlSession sqlSession = sqlSessionFactory.openSession();  
  26.         //通过SQLSession操作数据库  
  27.         User user = sqlSession.selectOne("test.findUserById"1);  
  28.           
  29.         System.out.println(user);  
  30.         //释放资源  
  31.         sqlSession.close();  
  32.     }  
  33.       
  34.     @Test  
  35.     public void findUserByName() throws Exception{  
  36.           
  37.         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("SqlMapConfig.xml"));  
  38.         SqlSession sqlSession = sqlSessionFactory.openSession();  
  39.           
  40.         List<User> list = sqlSession.selectList("test.findUserByName""张");  
  41.           
  42.         System.out.println(list);  
  43.         sqlSession.close();  
  44.     }  
  45.       
  46.     @Test  
  47.     public void insertUser() throws Exception{  
  48.           
  49.         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("SqlMapConfig.xml"));  
  50.         SqlSession sqlSession = sqlSessionFactory.openSession();  
  51.           
  52.         User user = new User();  
  53.         user.setName("李思");  
  54.         user.setSex(2);  
  55.         int n= sqlSession.insert("test.insertUser", user);  
  56.           
  57.         System.out.println(n);  
  58.         System.out.println(user.getId());  
  59.         //提交事务  
  60.         sqlSession.commit();  
  61.         sqlSession.close();  
  62.     }  
  63.       
  64.     @Test  
  65.     public void deleteUser() throws Exception{  
  66.           
  67.         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("SqlMapConfig.xml"));  
  68.         SqlSession sqlSession = sqlSessionFactory.openSession();  
  69.           
  70.         int n= sqlSession.delete("test.deleteUser"4);  
  71.           
  72.         System.out.println(n);  
  73.           
  74.         sqlSession.commit();  
  75.         sqlSession.close();  
  76.     }  
  77.       
  78.   
  79.     @Test  
  80.     public void updateUser() throws Exception{  
  81.           
  82.         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("SqlMapConfig.xml"));  
  83.         SqlSession sqlSession = sqlSessionFactory.openSession();  
  84.           
  85.         User user = new User();;  
  86.         user.setId(5);  
  87.         user.setName("李思aa");  
  88.         user.setSex(1);  
  89.         int n= sqlSession.insert("test.updateUser", user);  
  90.           
  91.         System.out.println(n);  
  92.           
  93.         sqlSession.commit();  
  94.         sqlSession.close();  
  95.     }  
  96.       
  97.       
  98.       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值