接上篇: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. php 上传csv文件

    php fgetcsv()函数 定义和用法 fgetcsv() 函数从文件指针中读入一行并解析 CSV 字段. 与 fgets() 类似,不同的是 fgetcsv() 解析读入的行并找出 CSV 格式 ...

  2. JAVA路线

    [转]Java自学之路——by马士兵 作者:马士兵老师 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机. ...

  3. LeetCode 151 reverse word in a string

    Given an input string, reverse the string word by word. For example, Given s = "the sky is blue ...

  4. 转:Python网页解析:BeautifulSoup vs lxml.html

    转自:http://www.cnblogs.com/rzhang/archive/2011/12/29/python-html-parsing.html Python里常用的网页解析库有Beautif ...

  5. 【bzoj1086】王室联邦

    我以为树分块什么的必有高论,结果居然是个暴力…… 方法也很简单,我看下每个节点dfs的时候是否已经大于k个,大于的话我就新开一块. 注意dfs的时候当前节点不能放进子树的块中. #include< ...

  6. Mac-sublime text 3破解版

    在史蒂芬周下载破解版 安装package control import urllib.request,os,hashlib; h = 'df21e130d211cfc94d9b0905775a7c0f ...

  7. Android开发工具--AndroidStudio

    1.Android studio更改快捷键File->setttings  搜索key map就可以更改成自己喜欢的会计键风格了

  8. IE6 下的HTML5兼容问题

    下面列举IE6中10个不得不注意的问题: 1. 使用 DOCTYPE你需要在HTML页面的最顶部加上DOCTYPE类型,当然, strict版是值得推荐的,例如: <!DOCTYPE HTML ...

  9. Newtonsoft.Json 序列化和反序列化 以及时间格式 2

    一.JSON使用JsonPropertyAttribute重命名属性名 1.先创建一个Movie对象,然后在其属性上添加JsonProperty,并指定重命名的名称.注意:属性Name和Directo ...

  10. delphi.memory.分配及释放---New/Dispose, GetMem/FreeMem及其它函数的区别与相同,内存分配函数

    来自:http://www.cnblogs.com/qiusl/p/4028437.html?utm_source=tuicool&utm_medium=referral ---------- ...