接上篇:Mybatis环境搭建

在搭建环境时已经有了mapper和sqlMapConfig

1,数据库建表

prompt PL/SQL Developer import file
prompt Created on 2018年6月1日 by Administrator
set feedback off
set define off
prompt Creating T_USER...
create table T_USER
(
T_NAME VARCHAR2(10) not null,
T_PASS VARCHAR2(10),
T_ID VARCHAR2(10)
)
; prompt Deleting T_USER...
delete from T_USER;
commit;
prompt Loading T_USER...
insert into T_USER (T_NAME, T_PASS, T_ID)
values ('张三', 'zhangsan', null);
insert into T_USER (T_NAME, T_PASS, T_ID)
values ('王五', 'wangwu', null);
insert into T_USER (T_NAME, T_PASS, T_ID)
values ('小张', 'xiaozhang', null);
insert into T_USER (T_NAME, T_PASS, T_ID)
values ('刘雯2', 'liuwen2', null);
insert into T_USER (T_NAME, T_PASS, T_ID)
values ('刘雯', 'liuwen', null);
insert into T_USER (T_NAME, T_PASS, T_ID)
values ('王二麻子', 'wanger', null);
insert into T_USER (T_NAME, T_PASS, T_ID)
values ('刘雯1', 'liuwen1', null);
insert into T_USER (T_NAME, T_PASS, T_ID)
values ('刘雯3', 'liuwen3', null);
insert into T_USER (T_NAME, T_PASS, T_ID)
values ('王柳', 'liu', null);
insert into T_USER (T_NAME, T_PASS, T_ID)
values ('Jone', 'Jone', null);
insert into T_USER (T_NAME, T_PASS, T_ID)
values ('李四', 'lisi', null);
commit;
prompt 11 records loaded
set feedback on
set define on
prompt Done.

2,导包

3,编写POJO

package com.songyan.pojo;

public class Customer {
private Integer id; //主键id
private String username; //客户名称
private String job; //职业
private String phone; //电话
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
} @Override
public String toString() {
//
return "Customer [id=" + id + ",username=" + username + ",job=" + job + ",phone=" + phone + "]";
} }

3,与之对应的mapper

<?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="com.songyan.mapper.Customer">
<select id="findCustomerById" parameterType="Integer"
resultType="com.songyan.pojo.Customer">
select * from tb_customer where id = #{v}
</select>
<select id="findCustomerByName" parameterType="Integer"
resultType="com.songyan.pojo.Customer">
select * from tb_customer where username like '%${value}%'
</select>
</mapper>

4,applicationcontext.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>
<!--配置环境,默认的环境id为oracle -->
<environments default="oracle">
<!-- 配置环境为oracle的环境 -->
<environment id="oracle">
<!--使用JDBC的事务处理 -->
<transactionManager type="JDBC" />
<!--数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:inspur"></property>
<property name="username" value="scott"></property>
<property name="password" value="tiger"></property>
</dataSource>
</environment>
</environments>
<!--配置mapper的位置 -->
<mappers>
<mapper resource="com/songyan/mapper/Customer.xml" />
</mappers>
</configuration>

log4j.properties

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p [%t] %c{1}:%L - %m%n
#\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
#log4j.rootLogger=stdout

5,测试类

package com.songyan.client;

import java.io.IOException;
import java.io.InputStream;
import java.util.List; import javax.faces.application.Application;
import javax.jms.Session; 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.Test; import com.songyan.pojo.Customer; public class Test1 {
/**
* 根据用户编号查询客户信息
* @throws IOException
*/
@Test
public void selectCuById() throws IOException
{
//读取配置信息
String resource="applicationContext.xml";
//根据配置文件构建sqlsessionFactory
InputStream in=Resources.getResourceAsStream(resource);
//通过sqlsessionFactory创建sqlsession
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession =sqlSessionFactory.openSession();
//sqlsession执行sql并返回执行结果
Customer customer= sqlSession.selectOne("com.songyan.mapper.Customer.findCustomerById",1);
//打印输出结果
System.out.println(customer);
//关闭sqlsession
sqlSession.close();
} /**
* 根据用户名查询客户信息
* @throws IOException
*/
@Test
public void findCustomerByName() throws IOException
{
//加载配置信息
String resource="applicationContext.xml";
//获取输入流
InputStream in=Resources.getResourceAsStream(resource);
//获取工厂
SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(in);
//获取sqlsession对象
SqlSession sqlSession=sessionFactory.openSession(); //执行sql
List<Customer> customers=sqlSession.selectList("com.songyan.mapper.Customer.findCustomerByName","j");
//输出结果
for(Customer cu : customers)
{
System.out.println(cu);
}
//关闭sqlsession
sqlSession.close(); } }

根据客户id查询的结果

根据客户name查询的结果

#{} 表示占位符,可以防止sql注入的问题,在执行sql的之后会自动补充单引号,他的参数可以任意的

${} 表示字符串的拼接 不可以防止sql的诸注入问题,在执行sql 的时候也没有任何添加符号,他的符号只能是value

当需要使用模糊查询,还要防止sql注入的时候可以使用下面的方式:

select * from user where username like "%"#{haha}"%"

使用#{}实现防止sql注入的问题

使用like "%"#{haha}"%"实现模糊查询

他表示的是包含haha的字段

												

Mybatis通过ID查询 && 通过name模糊查询的更多相关文章

  1. MyBatis Plus 实现多表分页模糊查询

    项目中使用springboot+mybatis-plus来实现. 但是之前处理的时候都是一个功能,比如分页查询,条件查询,模糊查询. 这次将这个几个功能合起来就有点头疼,写下这边博客来记录自己碰到的问 ...

  2. 阶段3 1.Mybatis_05.使用Mybatis完成CRUD_4 Mybatis的CRUD-查询一个和模糊查询

    模糊查询 测试的时候需要提供百分号的模糊查询.传入的参数提供百分号 所有包含王字的就都查询出来了.

  3. 2_02_MSSQL课程_where查询和like模糊查询

    1.where 条件过滤 常见的表达式过滤:比如: select * from 表 where Id>10; 多条件过滤: and or not    (优先级:not > and > ...

  4. T-SQL简单查询语句(模糊查询)

    T-SQL简单查询语句 简单查询: 1.最简单查询(查所有数据) select * from 表名: 注:* 代表所有列 select * from info 2.查询指定列 select code, ...

  5. sql server 分组查询结合日期模糊查询

    分组查询: https://www.cnblogs.com/netserver/p/4518995.html 日期格式化格式: http://blog.csdn.net/qq_16769857/art ...

  6. Mybatis 中在xxx.mapper书写模糊查询

    1.在mybatis中,书写sql,有时候会有一些不细心,如: <!-- 首页商品 关键字搜索--> <select id="getGoodsByLikeTitle&quo ...

  7. Mybatis【8】-- Mybatis返回List或者Map以及模糊查询怎么搞?

    使用mybatis的时候,经常发现一个需求,我怎么知道自己是不是增加/修改/删除数据成功了? 好像执行sql之后都没有结果的.其实不是的,增删改的sql执行之后都会有一个int类型的返回值,表示的意思 ...

  8. mybatis映射mapper文件做like模糊查询

    方法:使用concat函数连接通配符

  9. 8.mybatis动态SQL模糊查询 (多参数查询,使用parameterType)

    多参数查询,使用parameterType.实例: 用户User[id, name, age] 1.mysql建表并插入数据 2.Java实体类 public class User { public ...

随机推荐

  1. 图论:KM算法

    如果,将求二分图的最大匹配的所有匹配边的权重看做1 那么用匈牙利算法求二分图的最大匹配的问题也可以看成求二分图的最大权匹配 如果边权是特例,我们就要使用KM算法来做了 这个算法其实还是比较难的,会用就 ...

  2. hdu 6223 Infinite Fraction Path

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6223 题意:给定长度为n的一串数字S,现在要按照一种规则寻找长度为n的数字串,使得该数字串的字典序最大 ...

  3. 【UVALive4685-Succession】树形DP

    http://acm.hust.edu.cn/vjudge/problem/14338 题意:给定一棵树,每个点有一个值,让你选择k个点,并且这k个点是连在一起的(从任意一个点出发,可以遍历完所有选择 ...

  4. 【BZOJ3942】Censoring [KMP]

    Censoring Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 有一个S串和一个T串,长 ...

  5. bzoj1861 书架 splay版

    单点插入删除以及求前缀 #include<cstdio> #include<cstring> #include<algorithm> using namespace ...

  6. [bzoj3884]上帝与集合的正确用法——欧拉函数

    题目大意 题解 出题人博客 代码 #include <bits/stdc++.h> using namespace std; const int M = 10001000; int phi ...

  7. 取Session数据语句在应放在哪里

    UsersModel loginUser = (UsersModel)Session["usersModel"]; 直接放在 public partial class PagesF ...

  8. oracle 一行转多行

    比如sql: select zyxdm from table where bindid=2265254 查询结果为:1|4|8|9|10 将这个查询结果转成多行,结果如下: ID 1 4 8 9 10 ...

  9. python算法:约瑟夫问题

    据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特後,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被人抓到,于是决定了一个自杀方式,41 ...

  10. Java处理文件BOM头的方式推荐

    背景: java普通的文件读取方式对于bom是无法正常识别的. 使用普通的InputStreamReader,如果采用的编码正确,那么可以获得正确的字符,但bom仍然附带在结果中,很容易导致数据处理出 ...