05Mybatis_入门程序——根据id查询用户

这篇文章我们来做一个入门的案例:

建表;

 /*
 SQLyog v10.2
 MySQL - 5.1.72-community : Database - mybatis
 *********************************************************************
 */

 /*!40101 SET NAMES utf8 */;

 /*!40101 SET SQL_MODE=''*/;

 /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
 /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
 /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
 /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
 /*Table structure for table `items` */

 CREATE TABLE `items` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `name` varchar(32) NOT NULL COMMENT '商品名称',
   `price` float(10,1) NOT NULL COMMENT '商品定价',
   `detail` text COMMENT '商品描述',
   `pic` varchar(64) DEFAULT NULL COMMENT '商品图片',
   `createtime` datetime NOT NULL COMMENT '生产日期',
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

 /*Table structure for table `orderdetail` */

 CREATE TABLE `orderdetail` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `orders_id` int(11) NOT NULL COMMENT '订单id',
   `items_id` int(11) NOT NULL COMMENT '商品id',
   `items_num` int(11) DEFAULT NULL COMMENT '商品购买数量',
   PRIMARY KEY (`id`),
   KEY `FK_orderdetail_1` (`orders_id`),
   KEY `FK_orderdetail_2` (`items_id`),
   CONSTRAINT `FK_orderdetail_1` FOREIGN KEY (`orders_id`) REFERENCES `orders` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
   CONSTRAINT `FK_orderdetail_2` FOREIGN KEY (`items_id`) REFERENCES `items` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
 ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

 /*Table structure for table `orders` */

 CREATE TABLE `orders` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `user_id` int(11) NOT NULL COMMENT '下单用户id',
   `number` varchar(32) NOT NULL COMMENT '订单号',
   `createtime` datetime NOT NULL COMMENT '创建订单时间',
   `note` varchar(100) DEFAULT NULL COMMENT '备注',
   PRIMARY KEY (`id`),
   KEY `FK_orders_1` (`user_id`),
   CONSTRAINT `FK_orders_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
 ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

 /*Table structure for table `user` */

 CREATE TABLE `user` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `username` varchar(32) NOT NULL COMMENT '用户名称',
   `birthday` date DEFAULT NULL COMMENT '生日',
   `sex` char(1) DEFAULT NULL COMMENT '性别',
   `address` varchar(256) DEFAULT NULL COMMENT '地址',
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;

 /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
 /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
 /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

sql_table

 /*
 SQLyog v10.2
 MySQL - 5.1.72-community : Database - mybatis
 *********************************************************************
 */

 /*!40101 SET NAMES utf8 */;

 /*!40101 SET SQL_MODE=''*/;

 /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
 /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
 /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
 /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
 /*Data for the table `items` */

 insert  into `items`(`id`,`name`,`price`,`detail`,`pic`,`createtime`) values (1,'台式机',3000.0,'该电脑质量非常好!!!!',NULL,'2015-02-03 13:22:53'),(2,'笔记本',6000.0,'笔记本性能好,质量好!!!!!',NULL,'2015-02-09 13:22:57'),(3,'背包',200.0,'名牌背包,容量大质量好!!!!',NULL,'2015-02-06 13:23:02');

 /*Data for the table `orderdetail` */

 insert  into `orderdetail`(`id`,`orders_id`,`items_id`,`items_num`) values (1,3,1,1),(2,3,2,3),(3,4,3,4),(4,4,2,3);

 /*Data for the table `orders` */

 insert  into `orders`(`id`,`user_id`,`number`,`createtime`,`note`) values (3,1,'1000010','2015-02-04 13:22:35',NULL),(4,1,'1000011','2015-02-03 13:22:41',NULL),(5,10,'1000012','2015-02-12 16:13:23',NULL);

 /*Data for the table `user` */

 insert  into `user`(`id`,`username`,`birthday`,`sex`,`address`) values (1,'王五',NULL,'2',NULL),(10,'张三','2014-07-10','1','北京市'),(16,'张小明',NULL,'1','河南郑州'),(22,'陈小明',NULL,'1','河南郑州'),(24,'张三丰',NULL,'1','河南郑州'),(25,'陈小明',NULL,'1','河南郑州'),(26,'王五',NULL,NULL,NULL);

 /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
 /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
 /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

sql_data

05Mybatis_入门程序——根据id查询用户

给出案例结构:

05Mybatis_入门程序——根据id查询用户

第一步:编写po类:User.java

 package cn.itcast.mybatis.po;

 import java.util.Date;

 public class User {
 private int id;//主键
 private String username;//用户的名称
 private Date birthday;//生日
 private String sex;//性别
 private String address;//地址
 public int getId() {
     return id;
 }
 public void setId(int id) {
     this.id = id;
 }
 public String getUsername() {
     return username;
 }
 public void setUsername(String username) {
     this.username = username;
 }
 public Date getBirthday() {
     return birthday;
 }
 public void setBirthday(Date birthday) {
     this.birthday = birthday;
 }
 public String getSex() {
     return sex;
 }
 public void setSex(String sex) {
     this.sex = sex;
 }
 public String getAddress() {
     return address;
 }
 public void setAddress(String address) {
     this.address = address;
 }

 }

第二步:编写config包下面的SqlMapConfig.xml。这个配置文件主要是配置mybaits运行环境,数据源,事务等。SqlMapConfig.xml代码如下:

 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE configuration
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-config.dtd">
 <configuration>
     <!-- 和spring整合后 environments配置将废除-->
     <environments default="development">
         <environment id="development">
         <!-- 使用jdbc事务管理-->
             <transactionManager type="JDBC" />
         <!-- 数据库连接池-->
             <dataSource type="POOLED">
                 <property name="driver" value="com.mysql.jdbc.Driver" />
                 <property name="url" value="jdbc:mysql://localhost:3306/mybaits?characterEncoding=utf-8" />
                 <property name="username" value="root" />
                 <property name="password" value="root" />
             </dataSource>
         </environment>
     </environments>

     <!-- 把映射文件(sqlmap/user.xml)加载进sqlMapConfig.xml-->
         <mappers>
         <mapper resource="sqlmap/user.xml"/>
          </mappers>

 </configuration>

第三步:编写映射文件sqlmap/user.xml

 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!-- nanmespace:命名空间。 作用就是对sql进行分类话管理,理解Sal分离

 注意:使用mapper代理方式,namespace有特殊重要的作用
 -->

 <mapper namespace="test">

     <!-- 根据id获取用户信息 -->
     <!-- 在映射文件中配置很多sql语句 -->
     <!--
     id:标识映射文件中的sql;
     将sql语句封装到mappedStatement对象中,所以将id称为statement的id;parmenterType:指定输入的参数的类型,这里指定的int型
     #{}表示一个占位符号;
     #{id}:其中的id表示接收输入的参数,参数名称就是id,如果输入参数就是简单类型,#{}中的参数名可以任意,可以value或其它名称
     resultType:指定的sql输出结果的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象;

      -->
     <select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User">
         select * from user where id = #{id}
     </select>
     <!-- 自定义条件查询用户列表 -->
     <select id="findUserByUsername" parameterType="java.lang.String"
             resultType="cn.itcast.mybatis.po.User">
        select * from user where username like '%${value}%'
     </select>

 </mapper>

第四步:编写日志文件(log4j.properties)和Junit测试程序:

log4j.properties文件源码:

1
2
3
4
5
6
7
# Global logging configuration
#\u5728\u5f00\u53d1\u73af\u5883\u4e0b\u65e5\u5fd7\u7ea7\u522b\u8981\u8bbe\u7f6e\u6210DEBUG\uff0c\u751f\u4ea7\u73af\u5883\u8bbe\u7f6e\u6210info\u6216error
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

Junit测试程序源码:

 package cn.itcast.mybatis.first;

 import java.io.IOException;
 import java.io.InputStream;

 import org.apache.ibatis.io.Resources;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.ibatis.session.SqlSessionFactory;
 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 import org.junit.Before;
 import org.junit.Test;

 import cn.itcast.mybatis.po.User;

 public class Mybatis_first {

     //会话工厂
     private SqlSessionFactory sqlSessionFactory;
     //这些事必备的,所以放在Before这里了
     @Before
     public void createsqlSessionFactory() throws IOException
     {
         //配置文件
         String resource="SqlMapConfig.xml";
         InputStream inputStream=Resources.getResourceAsStream(resource);
         //使用SqlSessionFactoryBuilder从配置文件中创建SqlSessionFactory.
         sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
     }
     @Test
 //根据id查询用户的信息
     public void testFindUseById()
     {    //数据库会话实例
         SqlSession sqlSession=null;
         try {

             //创建数据库会话实例sqlSession;
             sqlSession=sqlSessionFactory.openSession();

             User user=sqlSession.selectOne("test.findUserById", 10);
  //输出对象的hashcode
             System.out.println(user);
         } catch (Exception e) {

             e.printStackTrace();
         }
         finally{
             //如果sqlSession实例是创建的那么把他关闭掉
             if(sqlSession!=null)
             {sqlSession.close();

             }
         }
     }
 }

运行结果:成功了,

输出为:cn.itcast.mybatis.po.User@4c1bd4f6


来源: 传智播客

上一篇:Win32 文件拖拽


下一篇:RabbitMQ Management HTTP API--官方文档