Mybatis通过ID查询 && 通过name模糊查询
接上篇: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模糊查询的更多相关文章
- MyBatis Plus 实现多表分页模糊查询
项目中使用springboot+mybatis-plus来实现. 但是之前处理的时候都是一个功能,比如分页查询,条件查询,模糊查询. 这次将这个几个功能合起来就有点头疼,写下这边博客来记录自己碰到的问 ...
- 阶段3 1.Mybatis_05.使用Mybatis完成CRUD_4 Mybatis的CRUD-查询一个和模糊查询
模糊查询 测试的时候需要提供百分号的模糊查询.传入的参数提供百分号 所有包含王字的就都查询出来了.
- 2_02_MSSQL课程_where查询和like模糊查询
1.where 条件过滤 常见的表达式过滤:比如: select * from 表 where Id>10; 多条件过滤: and or not (优先级:not > and > ...
- T-SQL简单查询语句(模糊查询)
T-SQL简单查询语句 简单查询: 1.最简单查询(查所有数据) select * from 表名: 注:* 代表所有列 select * from info 2.查询指定列 select code, ...
- sql server 分组查询结合日期模糊查询
分组查询: https://www.cnblogs.com/netserver/p/4518995.html 日期格式化格式: http://blog.csdn.net/qq_16769857/art ...
- Mybatis 中在xxx.mapper书写模糊查询
1.在mybatis中,书写sql,有时候会有一些不细心,如: <!-- 首页商品 关键字搜索--> <select id="getGoodsByLikeTitle&quo ...
- Mybatis【8】-- Mybatis返回List或者Map以及模糊查询怎么搞?
使用mybatis的时候,经常发现一个需求,我怎么知道自己是不是增加/修改/删除数据成功了? 好像执行sql之后都没有结果的.其实不是的,增删改的sql执行之后都会有一个int类型的返回值,表示的意思 ...
- mybatis映射mapper文件做like模糊查询
方法:使用concat函数连接通配符
- 8.mybatis动态SQL模糊查询 (多参数查询,使用parameterType)
多参数查询,使用parameterType.实例: 用户User[id, name, age] 1.mysql建表并插入数据 2.Java实体类 public class User { public ...
随机推荐
- Windows Time Client
Timezone: UTC Coordinated Universal Time ====Perform by Local / administrator must,configure Time se ...
- im4java学习----查看文档和test用例
im4java下载地址:http://sourceforge.net/projects/im4java/files/(谷歌搜索出来的第一个官方地址打不开) 我们需要下载bin和src 这2个压缩包. ...
- 二进制转16进制JAVA代码
public class Binary2Hex { public static void main(String[] args) { String bString ="10101000&qu ...
- oracle11g 使用数据泵导出导入数据
终于搞定了 快写个笔记 记录下. 删除用户的时候提示已经登录了不能删除,这个需要把登录的session结束掉. select username,sid,serial# from v$session w ...
- bzoj4240 zkw版
复习一波zkw树 很显然最后建出来的图不是单调序列就是一个类似 ...
- 【BZOJ】2442: [Usaco2011 Open]修剪草坪
[算法]动态规划 [题解] 万物皆动规,每时每刻都要想着DP!特别是这种明显可以序列递推的题目. 一个简单的思路是f[i]表示前i个选择合法方案(第i个可选可不选)的最大效率 f[i]=max(f[i ...
- Oop分析方法
为了实现Oop,这个我已经在一个前端的js项目中实现了Oop,过后总结:对于js这种动态语言,可以在运行时动态组件对象的属性和方法这种,解释型的语言来讲,真的是OOP,如果不存在关系数据库,仅仅是从后 ...
- bzoj 1192 二进制
原题传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1192 继续刷水题,二进制思想 //By BLADEVIL var x :longint; ...
- 原生sql和django的事务控制
def test(request): with connections['default'].cursor() as c: try: with transaction.atomic(using='de ...
- python实战===一行代码就能搞定的事情!
打印9*9乘法表: >>> print( '\n'.join([' '.join(['%s*%s=%-2s' % (y,x,x*y) for y in range(1,x+1)]) ...