01_根据Id查询User的数据

【工程目录】

【数据库表中内容 user表】

【sqlMapConfig.xml配置文件主要内容】

简述:sqlMapConfig.xml配置文件主要有两个作用:

1.配置和数据连接的相关信息,例如事务管理、数据库连接池等信息。

2.加载映射文件,例如本项目中的user.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     <!-- 和Spring整合之后这些配置将删除 -->
 8     <environments default="development">
 9         <environment id="development">
10             <!-- 使用jdbc事务管理 -->
11             <transactionManager type="JDBC" />
12             <!-- 数据库连接池 -->
13             <dataSource type="POOLED">
14                 <property name="driver" value="com.mysql.jdbc.Driver"/>
15                 <property name="url"
16                     value="jdbc:mysql://localhost:3306/mybatisdb?useUnicode=true&amp;characterEncoding=UTF-8" />
17                 <property name="username" value="root"/>
18                 <property name="password" value=""/>
19             </dataSource>
20         </environment>
21     </environments>
22
23     <!-- 加载映射文件 -->
24     <mappers>
25         <mapper resource="sqlmap/user.xml"/>
26     </mappers>
27
28 </configuration>

【user.xml】

在user.xml文件中编写相关的CRUD的代码

<?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">
<mapper namespace="test">
    <select id="findUserById" parameterType="int" resultType="com.Higgin.Mybatis.po.User">
         SELECT * from USER WHERE id=#{id}
     </select>
</mapper>

解释:

1.namespace命名空间,作用就是对sql进行分类化管理。注意:使用mapper代理方法开发,namespace有特殊重要的作用。

2.在<mapper>映射文件中可以配置很多的sql语句,除了<select>还有<delete>、<update>、<insert>等等

3.通过select 执行数据库查询,将sql语句封装到mapperStatement对象中,所以将id成为statement的id

4.parameterType:指定输入参数的类型,这里指定是int类型

5.#{}:表示一个占位符

6.#{id}:其中的占位符表示接入输入的参数,参数名称为id,若输入的参数是简单类型,#{}中的参数名称可以任意,既可以是value或者其他名称

7.resultType:指定sql输出结果所映射的java类型对象,select指定resultType表示将单条记录映射成的User对象

【log4j.properties】

#Global logging configuration
#在开发环境下,日志级别要设置成DEBUG
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

【User.java】

 1 package com.Higgin.Mybatis.po;
 2
 3 import java.util.Date;
 4
 5 public class User {
 6     //属性名和数据库表字段对应
 7         private int id;
 8         private String username;
 9         private String sex;
10         private Date birthday;
11         private String address;
12        //忽略get、set、toString方法....
13 }

【MyBatisTest.java】

public class MyBatisTest {
    @Test
    public void testFindUserByID() throws IOException{
        //mybatis配置文件
        String resource="SqlMapConfig.xml";

        //得到配置文件
        InputStream inputStream=Resources.getResourceAsStream(resource);

        //创建会话工厂,传入mybatis的配置文件信息
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);

        //通过工厂得到SqlSession
        SqlSession sqlSession=sqlSessionFactory.openSession();

        //通过SqlSession操作数据库
        //第一个参数:映射文件中statement的id,等于:namespace+"."+statement的id
        //第二个参数:指定映射文件中的所匹配的parameterType类型的参数
        User user=sqlSession.selectOne("test.findUserById", 2);
        System.out.println(user.toString());
        //释放资源
        sqlSession.close();
    }
}

【运行结果】

时间: 2024-10-25 05:35:58

01_根据Id查询User的数据的相关文章

MySQL 中根据A表的ID查询B表数据

例1:查询某个文章及其对应的评论(单个详情) SELECT id, name, (SELECT comment_id, title, content FROM B WHERE user_id = A.id ORDER BY create_time DESC LIMIT 1) FROM A; 例2:查询分类表中,每种分类各包含多少商品(汇总) SELECT category_id, (SELECT count(goods_id) FROM Goods WHERE category_id = A.c

mongo里面根据对象字段的ID查询 db.Photo.find({&#39;owner.$id&#39;:ObjectId(&#39;xxxx&#39;)}) , 并且使用forEach循环修改查询的数据

var ones = db.Photo.find({'owner.$id':ObjectId("5344f0dab7c58e8e098b4567")}) db.Photo.find({'owner.$id':ObjectId("5344f0dab7c58e8e098b4567")}).forEach(function(o){o.owner=null;db.Photo.save(o)}); mongo里面根据对象字段的ID查询 db.Photo.find({'owne

数据库如何查询第二条数据且ID不同

关于数据库如何查询第二条数据且ID不同 在sever 2008数据库中,查询语句为 select * from 表名  或则   select 列名 from 表名 这是查询一个表中所有的数据,那么查询第二语句呢? 开始用“top 2”是可以查询前两条数据的,再根据指定的列名排序,这样想可以 “select top 2 * from 表名 order by 列名 desc”(desc倒序 acs正序), 但是查询出来的为最后两条的数据,可见是先倒序然后查询的头两条.那么倒序是行不通. 正序又有两

数据库已知一条数据的ID,如何查询下条数据且ID不同

数据库已知一条数据的ID,如何查询下条数据且ID不同 首先ID已知一条,假如得到的为“1001”,下条的数据ID有可能相同,有可能不相同,如何查询?如果直接查询 “Select * from 表名 where 列名ID='1001'” 就只能查询本身的一条数据,添加“top 2”,也会只有一条数据.可不可以直接查询该数据以下的数据呢? “Select * from 表名 where 列名ID>'1001' Order By 列名ID” 这样就查询大于gaiID的数据,只要下一条,再加上“top

sqlite学习笔记10:C语言中使用sqlite之查询和更新数据

前面说到的 sqlite_exec() 中的第三个参数, SQLite 将为 sql 参数内执行的每个 SELECT 语句中处理的每个记录调用这个回调函数. 本节添加了两个函数,selectFromTable和updateTable. 实例程序如下: #include <stdio.h> #include <stdlib.h> #include "sqlite/sqlite3.h" #define DB_NANE "sqlite/test.db&quo

sql语句查询重复的数据

查找所有重复标题的记录:SELECT *FROM t_info aWHERE ((SELECT COUNT(*)FROM t_infoWHERE Title = a.Title) > 1)ORDER BY Title DESC一.查找重复记录1.查找全部重复记录Select * From 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1)2.过滤重复记录(只显示一条)Select * From HZT Whe

SQL 中 not in 查询不到数据问题

在开发的过程中,遇到过not in 始终查询不到数据问题 select * from T_CustomerInfo where CustomerID not in (select CustomerID from T_OrderInfo) 后来使用not exists查询 select * from T_CustomerInfo a where not exists (select CustomerID from T_OrderInfo where CustomerID=a.CustomerID)

一个共通的viewModel搞定所有的分页查询一览及数据导出(easyui + knockoutjs + mvc4.0)

前言 大家看标题就明白了我想写什么了,在做企业信息化系统中可能大家写的最多的一种页面就是查询页面了.其实每个查询页面,除了条件不太一样,数据不太一样,其它的其实都差不多.所以我就想提取一些共通的东西出来,再写查询时只要引入我共通的东西,再加上极少的代码就能完成.我个人比较崇尚代码简洁干净,有不合理的地方欢迎大家指出. 这篇文章主要介绍两个重点:1.前台viewModel的实现.2.后台服务端如何简洁的处理查询请求. 需求分析 查询页面要有哪些功能呢 1.有条件部输入查询条件(这个不打算做成共通的

框架 day50 BOS项目 4 批量导入(ocupload插件,pinyin4J)/POI解析Excel/Combobox下拉框/分区组合条件分页查询(ajax)/分区数据导出(Excel)

知识点: 批量导入(ocupload插件,pinyin4J /POI解析Excel(apache POI) /区域分页查询 /Combobox下拉框 /分区组合条件分页查询(ajax) /分区数据导出(Excel下载) BOS项目笔记第4天 1.    区域批量导入功能 *Ajax不支持文件上传. *上传并且不刷新上传页面原理: Target到一个0,0,0的隐藏iframe里,造成一个没有刷新的假象 <form target="myIframe" action="ab