文档章节

mybatis使用 原始dao开发 (自己写dao实现类)

 小小小施爷
发布于 2017/09/07 21:07
字数 765
阅读 6
收藏 1
点赞 0
评论 0

先配置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>  

	<!-- 加载配置文件 -->
	<properties resource="db.properties"></properties>
	
	<!-- 开启二级缓存 -->
    <settings>
    	<setting value="true" name="cacheEnabled"/>
    </settings>
    <!-- 对事务的管理和连接池的配置 -->  
    <!-- 和spring 整合后environments配置将废除 -->
    <environments default="development">  
        <environment id="development">  
        <!-- 使用jdbc事物管理,事物控制由mybatis管理 -->
            <transactionManager type="JDBC" />  
            <!-- 数据库连接池 -->
            <dataSource type="POOLED">  
                <property name="driver" value="${jdbc.driver}" />  
                <property name="url" value="${jdbc.url}" />  
                <property name="username" value="${jdbc.uername}" />  
                <property name="password" value="${jdbc.password}" />  
            </dataSource>  
        </environment>  
    </environments>  
    
    
    <!-- 在sqlmapconfig.xml中加载映射文件 -->
    <mappers>
    	<mapper resource="sqlMap/User.xml"/>
    	<mapper resource="sqlMap/UserMapper.xml"/>
    	<mapper resource="com/shi/mapper/OrderMapper.xml"/>
    </mappers>
        
</configuration>

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">
<!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离
注意:使用mapper代理方法开发,namespace有特殊重要的作用-->
<mapper namespace="test">
	<!-- 在映射文件中配置很多sql语句 -->
	<!-- 需通过id查询用户 -->
	<!-- 通过select执行查询
	id:表示映射文件中的sql
	讲sql语句封装到mapedStatement对象中,所以将id称为statement的id  
	parameterType:指定输入参数的类型,这里指定int型
	#{} :表示一个占位符
	#{id} :  其中的id表示接受输入的参数,参数名称就是id,如果输入的参数是简单类型,
			 #{}中的参数名可以任意,可以value或者其他名称
	resultType :指定sql输出的所映射的java对象类型,select指定resultType表示
				将单条记录映射成的java对象
	-->
	<select id="findUserById" parameterType="int" resultType="com.shi.POJO.User">
		SELECT * FROM USER WHERE id=#{value}
	</select>
	
	<!-- 根据用户名称模糊查询用户,可能返回多条记录,
	 resultType :指定的就是单条记录所映射的java对象类型  
	 %{}表示拼接sql串,将接受的参数类容不加修饰的拼接在sql中
	 问题:使用${}拼接sql,引起sql注入 不安全
	 ${value} :接受参数的类容,如果传入的参数是简单类型,${}中只能使用value
	 -->
	<select id="findUserByName" parameterType="java.lang.String" resultType="com.shi.POJO.User">
		SELECT * FROM USER WHERE username LIKE '%${value}%'
	</select>

<!-- 删除用户 -->
	<delete id="deleteUser" parameterType="int">
		delete from user where id=#{id}
	</delete>
	
	<!-- 跟新用户 -->
	<update id="updateUser" parameterType="com.shi.POJO.User"> 
		update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address}  where id=#{id}
	</update>
	
</mapper>

第一个dao实现类 的查询用户的方法

@Test
	public void findByIdTest() throws IOException {
		//获取mybatis配置文件
		String resource="SqlMapConfig.xml";
		//得到配置文件流
		InputStream inputStream=Resources.getResourceAsStream(resource);
		//InputStream inputStream=Resources.getUrlAsStream("");
		System.out.println(inputStream);
		//创建会话工厂,传入mybatis配置文件信息
		SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
		
		//通过工厂得到sqlSession
		SqlSession sqlSession=sqlSessionFactory.openSession();
		
		//通过sqlSession操作数据库
		//第一个参数:映射文件中的statement的id。等于=namespace+"."+statement的id
		//第二个参数:指定和映射文件中所匹配的parameterType类型的参数
		//sqlSession.selectOne(statement,type);返回的结果是和映射文件中匹配的resultType类型的对象	
		User user=sqlSession.selectOne("test.findUserById", 1);
		
		//System.out.println("用户名是  : "+user.getUsername());
		System.out.println(user);
		//释放资源
		sqlSession.close();
	}

原始dao开发过程中的问题 输入图片说明

© 著作权归作者所有

共有 人打赏支持
粉丝 4
博文 113
码字总数 86140
作品 0
合肥
【MyBatis框架】Mybatis开发dao方法第一部分

下面来讨论mybatis开发Dao的方法 先来说一下基本架构流程中使用到的几个类 1.SqlSession使用范围 1.1SqlSessionFactoryBuilder 通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory...

Mysoft
2015/09/17
220
0
MyBatis初探二

一、Mybatis 的 Dao 层两种开发方式 1、原始Dao开发模式( 自己手动实现Dao层接口和实现类 ) 》 实现思路:编写Dao接口和实现类,在Dao接口中注入单例的SqlSessionFactory,通过SqlSessionFac...

AAASSSSddd
2016/04/02
46
5
MyBatis开发dao方法

一 SqlSession使用范围 SqlSessionFactoryBuilder 通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory 将SqlSessionFactoryBuilder当作一个工具类使用即可,不需要使用单例管理Sql...

Bbigbug
2017/11/17
0
0
MyBatis 实践 -Mapper与DAO

标签: Java与存储 MyBatis简介 MyBatis前身是iBatis,是一个基于Java的数据持久层/对象关系映射(ORM)框架. MyBatis是对JDBC的封装,使开发人员只需关注SQL本身,而不需花费过多的精力去处理如注...

hanqing280441589
2016/02/28
0
0
【MyBatis框架】mybatis和spring整合

spring和mybatis整合 1.整合思路 需要spring通过单例方式管理SqlSessionFactory。 spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSession。(spring和mybatis整合自动完成)...

Mysoft
2015/09/21
75
0
mybatis入门&三种接口代理开发&别名、返回值、类型转换&比较

mybatis入门程序: 增删改查: 普通dao开发模式: 三种 接口代理开发模式: 使用接口代理注意事项: 只要使用接口,就必须满足四个条件: * 1、映射文件namespace必须是接口全类路径名 * 2、映射...

萧小蚁
2016/07/16
21
0
【MyBatis框架】Mybatis开发dao方法第二部分

下面来继续讨论mybatis开发Dao的方法 我们前面使用原始的Dao开发方法,发现了许多弊端,我们下面使用mapper代理来写Dao方法。 1.mapper代理方法(程序员只需要mapper接口(相当 于dao接口))...

Mysoft
2015/09/17
37
0
mybatis学习笔记(4)-开发dao方法

mybatis学习笔记(4)-开发dao方法 标签: mybatis [TOC] 本文讲解SqlSession,并对两种方法(原始dao开发和mapper代理开发)分别做简单展示 SqlSession使用范围 SqlSessionFactoryBuilder 通过创...

brianway
2016/02/27
180
0
Mybatis开发dao的方法

SqlSessionFactoryBuilder:通过创建会话工厂,将当成一个工具类使用即可,不需要使用单例管。 在需要创建时候,只需要一次即可。 SqlSessionFactory:通过创建,使用单例模式管理(工厂一旦...

小小蒜头
2017/11/24
0
0
MyBatis中如何通过继承SqlSessionDaoSupport来编写DAO(二)

(本文示例工程源代码下载地址:http://down.51cto.com/data/1975295) 在上一篇博文的最后,介绍了使用@PostConstruct注解标注StudentDao的init方法,这样在Spring完成依赖注入后此方法即会...

NashMaster2011
2015/01/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

并发设计之A系统调用B系统

A-->B A在发送请求之前,用乐观锁,减少对B的重复调用,这样一定程度上是幂等性。 比如A系统支付功能,要调用B系统进行支付操作,但是前端对"支付"按钮不进行控制,即用户会不断多次点击支付...

汉斯-冯-拉特
7分钟前
0
0
HTTP协议通信原理

了解HTTP HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务。 HTTP使用...

寰宇01
30分钟前
0
0
【Java动态性】之反射机制

一、Java反射机制简介

谢余峰
31分钟前
1
0
Centos 6.X 部署环境搭建

1.Linux学习笔记CentOS 6.5(一)--CentOS 6.5安装过程

IT追寻者
44分钟前
0
0
博客即同步至腾讯云+社区声明

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=8vy9bsmadbko...

xiaoge2016
46分钟前
0
0
大数据教程(3.1):Linux系统搭建网络YUM源服务器

博主在前面的2.5章节讲述了linux系统本地YUM服务器的搭建和httpd轻量级静态网站服务器的安装,本节博主将为大家分享内网环境中搭建自己的网络YUM服务器的全过程。如果大家对本地YUM服务器还不...

em_aaron
50分钟前
0
0
蚂蚁技术专家:一篇文章带你学习分布式事务

小蚂蚁说: 分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在这几年越来越火的微服务架构中,几乎可以说是无法避免,本文就围绕分布式事务...

Java大蜗牛
52分钟前
0
0
新的Steam应用将拓展服务项目

导读 未来几周,Steam将推出两个免费的应用程序Steam Link和Steam Video。这两个应用程序都旨在拓展Steam平台的业务和便利性。 即将开放的Steam Link应用程序最先提供了Android测试版,它将允...

问题终结者
52分钟前
0
0
golang 第三方包的使用总结

golang 第三方包的安装的方法: 1. go get 安装 $ go get github.com/gin-gonic/gin 注意:执行go get 命令需要先安装git命令,并配置git全局变量。 2. 源码包安装 由于国内网络问题,很多时...

科陆李明
今天
1
0
Android Studio调试运行时ADB not responding

最近有我朋友问我一个android studio的调试运行问题,我记得以前也是遇到过得,所以 来写一下 ADB not responding.If you'd like to retry, then please manually kill "adb.exe" and click...

切切歆语
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部