mybatis如何增改删(以及mappers中的parameterType问题)
来源:互联网 发布:小学生大数据分析 编辑:程序博客网 时间:2024/05/17 03:19
首先看完我第一篇笔记http://blog.csdn.net/zyf2333/article/details/77528279,我是跟着这一篇来继续学习的。然后学习过程中发现parameterType的参数传入有点搞不懂,最后讲讲。
jikeUser.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"><mapper><!--此处的parameterType中使用了别名机制,配置在MyBatis.xml中--> <insert id="insertUser" parameterType="JikeUser" statementType="PREPARED" keyProperty="id" useGeneratedKeys="true"> insert into JikeUser(username,password) values (#{userName},#{passWord}) </insert> <update id="updateUser" parameterType="JikeUser"> UPDATE JikeUser SET userName=#{userName},password=#{passWord} WHERE id=#{id} </update> <delete id="deleteUser" parameterType="int"> delete from JikeUser where id=#{id} </delete></mapper>
基础 配置文件如下(MyBatis.xml):
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//iBATIS.com//DTD SQL Map Config 3.0//EN" "mybatis-3-config.dtd" ><configuration> <!-- 定义别名,这样在jikeUser.xml中的parameterType中不用写全类名了 --> <typeAliases> <typeAlias type="jike.book.pojo.JikeUser" alias="JikeUser" /> </typeAliases> <!-- 定义数据库信息,默认使用development数据库构造环境 --> <environments default="development"> <environment id="development"> <!-- 采用jdbc事物管理 --> <transactionManager type="JDBC" /> <!-- 配置数据库链接信息 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatis" /> <property name="username" value="root" /> <property name="password" value="zyf1998don" /> </dataSource> </environment> </environments> <!-- 定义映射器,即引用上面的那个SQL语句文件 --> <mappers> <mapper resource="jike/book/map/jikeUser.xml" /> <mapper class="jike.book.map.InterfaceJikeUserMap" /> </mappers></configuration>
然后是JikeUser.java
package jike.book.pojo;public class JikeUser { private int id; private String userName; private String passWord; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassWord() { return passWord; } public void setPassWord(String passWord) { this.passWord = passWord; }}
最后写个测试类
package jike.book.test;import java.io.Reader;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 jike.book.map.InterfaceJikeUserMap;import jike.book.pojo.JikeUser;public class TestUpdate { public static void main(String[] args) { // TODO Auto-generated method stub String resource="jike/book/map/MybatisConfig.xml"; Reader reader=null; SqlSession sqlSession; try{ reader=Resources.getResourceAsReader(resource); }catch(Exception e){ e.printStackTrace(); } SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader); sqlSession=sqlSessionFactory.openSession(); try{ JikeUser jk=new JikeUser(); jk.setUserName("jike002"); jk.setPassWord("1245464"); sqlSession.insert("insertUser", jk); sqlSession.commit(); JikeUser jk2=new JikeUser(); jk2.setId(6); jk2.setUserName("jk003"); jk2.setPassWord("666"); sqlSession.update("updateUser", jk2); sqlSession.commit(); JikeUser jk3=new JikeUser(); jk3.deleteUser(1); sqlSession.commit(); }catch(Exception e){ e.printStackTrace(); } }}
最后说一下parameterType的参数传入问题:
parameterType可以传入很多类型,基础的如int varchar等等,这些很好理解,比如说在SQL语句的#{id}就代表着要传入一个int类型的数字。但是在学习过程中,发现居然还能传入Java类(即上面的 parameterType=”JikeUser”; 这里利用了别名机制,实际上应该是 parameterType=”jike.book.pojo.JikeUser”,即类的全名)?
于是最后我的领悟是:有多个参数时一般都会插入类用来使这个xml文件和Java文件相关联,并且可以令xml文件引用Java中的属性。在本例中,联系上了JikeUser.java,它有id,userName和passWord这三个属性。然后在JikeUser.xml中的插入语句中
<insert id="insertUser" parameterType="JikeUser" statementType="PREPARED" keyProperty="id" useGeneratedKeys="true"> insert into JikeUser(username,password) values (#{userName},#{passWord}) </insert>
此处的#{userName}和#{passWord}就是传入的JikeUser.java这个类中的userName和passWord两个属性,且名字要对应相同(ps:此处不设置id是因为数据库开启了自增,所以id会自动增加,故没有管id)。而如果只有一个参数,则直接写”int” “String”之类的就好了
- mybatis如何增改删(以及mappers中的parameterType问题)
- Mybatis如何加载配置文件 源码解读parameterType
- MyBatis中的映射文件标签属性 parameterType
- Mybatis 中selete的parameterType问题
- mybatis 中parametertype的传入参数问题
- Mybatis之映射器(mappers)
- Mybatis的parameterType以及foreach标签的详解
- Mybatis传入多参数查询ParameterType=Map问题
- mybatis的映射器(mappers)学习理解
- Mybatis parameterType 与 resultMap
- MyBatis传参与parameterType
- MyBatis之传入参数——parameterType(转)
- MyBatis 传入参数之parameterType
- MyBatis传入参数与parameterType
- MyBatis传入参数与parameterType
- MyBatis传入参数与parameterType
- MyBatis传入参数与parameterType
- MyBatis传入参数与parameterType
- linux设置代理
- C语言——通讯录的实现
- 2017华为笔试题2
- stm32建c++与c混合工程遇到的问题及解决
- crontab 如果不存在则运行
- mybatis如何增改删(以及mappers中的parameterType问题)
- mybatis和hibernate区别
- Appache配置https
- HDU 4006:The kth great number
- Cookie/Session机制详解
- Activity工作机制
- Android实战设计模式-----状态模式
- Linux系统下vim文本编辑器常用功能,vim命令常用方法
- linux常用命令