MyBatis增删改查
2016-07-24 13:41
302 查看
如下文章若有误请指出,谢谢。
老规矩,先看下本篇文章所讲内容
增删改查
上一篇文章我们简单的介绍了下MyBatis,这一篇文章我们继续学习MyBatis。
数据库最基本的操作就是增删改查了,接下来让我们一起学习在MyBatis如何对数据库进行增删改查操作,首先看下如何往数据库中添加一条数据。
1、insert
我们在上一篇文章中有介绍到在使用MyBatis框架时我们要写一个基本配置文件和一个Map配置文件, 不清楚的同学可以先去看下上一篇文章<初识MyBatis>,其中我们都是把SQL语句写在Map配置文件里,下面我们一起来看下Map配置文件中往数据库添加数据的SQL语句
是表示预处理的SQL语句,它有三种方式分别为:STATEMENT,PREPARED或CALLABLE的一种,MyBatis默认方式:PREPARED。keyProperty代表的哪一个主键,我们数据库当中选择id作为主键,usGeneratedKeys表示应用JDBC或数据库的自增机制来完主键设定。insert语句中的#{username}代表一个参数,参数名称叫username,类似我们在JDBC操作PreparedStatement中的(?)。parameterType表示 将会传入这条语句的参数类的完全限定名或别名,我这里使用的是一个别名(jkuser),我们来看下如何声明一个别名:
SQL语句已经有了,接下来我们看下如何在Java代码里操作
} catch (IOException e) { e.printStackTrace();}finally { session.close(); }
从代码里我们可以知道通过SqlSession对象执行insert方法,其中insert参数1就是我们刚才在Map配置文件里定义的id=“inseryUser”,参数2就是我们定义的parameterType="jkuser“,这里我们传入参数类型是是数据库的映射类,这个类里set了我们要插入数据库的用户名和密码,最后别忘了要关闭SqlSession。
2、delete
大家如果之前有了解了数据库的基本操作,通过上面讲的insert操作之后,应该知道其它的删、改也是类似的操作,只要在Map配置文件里添加相应的SQL语句,然后在代码中通过SqlSession操作,下面直接贴出代码
3、update
(1) 查询单条
(2)查询多条
5、select(resultMap方式)
在Java代码中
老规矩,先看下本篇文章所讲内容
增删改查
上一篇文章我们简单的介绍了下MyBatis,这一篇文章我们继续学习MyBatis。
数据库最基本的操作就是增删改查了,接下来让我们一起学习在MyBatis如何对数据库进行增删改查操作,首先看下如何往数据库中添加一条数据。
1、insert
我们在上一篇文章中有介绍到在使用MyBatis框架时我们要写一个基本配置文件和一个Map配置文件, 不清楚的同学可以先去看下上一篇文章<初识MyBatis>,其中我们都是把SQL语句写在Map配置文件里,下面我们一起来看下Map配置文件中往数据库添加数据的SQL语句
<mapper namespace="/"> <!-- 增 --> <insert id="insertUser" parameterType="jkuser" statementType="PREPARED" keyProperty="id" useGeneratedKeys="true"> insert into jkuser(username , password) values (#{username},#{password}) </insert> </mapper>我们来 看一下这条SQL语句,在insert标记中我们可以看到一个id=“insertUser”,这个id是我们待会在Java代码中操作时,用来告诉代码在哪执行相关的SQL语句,statementType
是表示预处理的SQL语句,它有三种方式分别为:STATEMENT,PREPARED或CALLABLE的一种,MyBatis默认方式:PREPARED。keyProperty代表的哪一个主键,我们数据库当中选择id作为主键,usGeneratedKeys表示应用JDBC或数据库的自增机制来完主键设定。insert语句中的#{username}代表一个参数,参数名称叫username,类似我们在JDBC操作PreparedStatement中的(?)。parameterType表示 将会传入这条语句的参数类的完全限定名或别名,我这里使用的是一个别名(jkuser),我们来看下如何声明一个别名:
<!-- 定义别名 ,定义在environments之前 --> <typeAliases> <!-- alias是定义别名的名称 type是原名--> <typeAlias alias="jkuser" type="jike.book.pojo.jkuser"/> </typeAliases>我们在基本配置文件里通过typeAliases标记来为一些类定义别名,我们看以上的代码,其中 type是我们的类的文档所在位置,也就是包名+类名,然后alias是我们自己定义的别名,方便我们操作。上面不是提到了parameterType表示 将会传入这条语句的参数类的完全限定名或别名,别名我们已经知道如何去定义了,然后完全限定名其实就是我们在定义别名时的“jike.book.pojo.jkuser”,通常我们都会事先定义别名,来方面我们后面的操作。声明别名时得注意下,在基本配置文件里定义别名时,要把定义别名写在environments标记之前否则会报org.xml.sax.SAXParseException异常
SQL语句已经有了,接下来我们看下如何在Java代码里操作
String resourc="jk/book/map/MyBatisConfig.xml"; Reader reader=null; SqlSession session=null; try { reader=Resources.getResourceAsReader(resourc);
<pre name="code" class="java" style="color: rgb(51, 51, 51); font-size: 14px; line-height: 26px;"> SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader); session=factory.openSession();
<pre name="code" class="java" style="color: rgb(51, 51, 51); font-size: 14px; line-height: 26px;"> jkuser user=new jkuser(); ser.setUsername("张一"); user.setPassword("123"); session.insert("insertUser", user); session.commit();
} catch (IOException e) { e.printStackTrace();}finally { session.close(); }
从代码里我们可以知道通过SqlSession对象执行insert方法,其中insert参数1就是我们刚才在Map配置文件里定义的id=“inseryUser”,参数2就是我们定义的parameterType="jkuser“,这里我们传入参数类型是是数据库的映射类,这个类里set了我们要插入数据库的用户名和密码,最后别忘了要关闭SqlSession。
2、delete
大家如果之前有了解了数据库的基本操作,通过上面讲的insert操作之后,应该知道其它的删、改也是类似的操作,只要在Map配置文件里添加相应的SQL语句,然后在代码中通过SqlSession操作,下面直接贴出代码
<delete id="deleteUser" parameterType="jkuser"> delete from jkuser where id=#{id} </delete>这里我们通过指定id进行删除。
session=factory.openSession(); jkuser user=new jkuser(); user.setId(1); session.delete("deleteUser", user); session.commit(); session.close();我们在Java代码中通过给映射类set一个id,这个id就是我们在Sql语句里指定删除的id。
3、update
<update id="updateUser" parameterType="jkuser"> update jkuser set username=#{username,jdbcType=VARCHAR},password=#{password} where id=#{id} </update>
session=factory.openSession(); jkuser user=new jkuser(); user.setId(1); user.setUsername("张二"); user.setPassword("12"); session.update("updateUser",user); session.commit(); session.close();4、select(resultType方式)
(1) 查询单条
<select id="loginSelect" resultType="jkuser" parameterType="hashmap"> select * from jkuser where username=#{username} and password=#{password} </select>resultType 表示从这条语句中返回的期望类型的类的完全限定名或别名,这里我利用别名。parameterType表示将会传入这条语句的参数类型是一个HashMap集合。
session=factory.openSession(); HashMap< String, String> map=new HashMap<>(); map.put("username", "张四"); map.put("password", "123"); jkuser user=session.selectOne("loginSelect", map);这里我们可以看到查询返回的类型是一个对象。
(2)查询多条
<select id="selectList" resultType="jkuser"> select * from jkuser </select>java代码
List<jkuser> list=session.selectList("selsectList");我们可以看到和上面的单条查询不一样,单条查询我们是调用SelectOne,多条查询我们调用的selectList,返回的是一个集合。
5、select(resultMap方式)
<span style="font-size:14px;"><resultMap type="jkuser" id="rMap"> <id property="id" column="id" /> <result property="username" column="username"/> <result property="password" column="password"/> </resultMap> <select id="selsectRMap" resultMap="rMap"> select id ,username ,password from jkuser </select></span>使用resultMap方式时,要指定关系,我们可以在resultMap标记中看到指定对象的属性名(property)与表的的列名(column)相互匹配。在select标记中我们可以看到我们使用的是resultMap返回查询结果的方式。
在Java代码中
List<jkuser> list=session.selectList("selsectRMap");到这里我们MyBatis的增删改查就结束了,如果文章中有出错,请指出,谢谢。
相关文章推荐
- FHIR的REST接口形式
- Spring 框架的设计理念与设计模式分析
- HDU1241 Oil Deposits
- Android最佳性能实践(四)——布局优化技巧
- DNS域名轮循业务监控
- CodeBlocks快捷键大全(附汉化教程及其文件)
- Java获取客户端IP地址-转
- HDU 3746 Cyclic Nacklace kmp算法
- 三十天完成一个Android项目(Android应用程序的构成)
- Android Service 服务的基本用法
- 文章标题
- 聊天界面
- SpringBoot学习笔记(3) Spring Boot 运行原理,自动配置
- Android最佳性能实践(三)——高性能编码优化
- Android最佳性能实践(二)——分析内存的使用情况
- HDU1237 简单计算器
- MAC pro 初体验
- API使用的Android权限列表(Permissions)
- Spring 框架简介
- POJ2796->单调栈