mybatis如何增改删(以及mappers中的parameterType问题)
2017-08-24 15:30
363 查看
首先看完我第一篇笔记http://blog.csdn.net/zyf2333/article/details/77528279,我是跟着这一篇来继续学习的。然后学习过程中发现parameterType的参数传入有点搞不懂,最后讲讲。
jikeUser.xml文件如下:直接将增删改写一起了
基础 配置文件如下(MyBatis.xml):
然后是JikeUser.java
最后写个测试类
最后说一下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中的插入语句中
此处的#{userName}和#{passWord}就是传入的JikeUser.java这个类中的userName和passWord两个属性,且名字要对应相同(ps:此处不设置id是因为数据库开启了自增,所以id会自动增加,故没有管id)。而如果只有一个参数,则直接写”int” “String”之类的就好了
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 中selete的parameterType问题
- Mybatis的parameterType以及foreach标签的详解
- mybatis复习-配置文件中别名typeAliases以及mappers的作用
- C#如何在派生类中不显示父类的一些属性以及TypeDescriptor使用
- archlinux - 如何解决密钥问题以及字体配置问题(infinality)
- mybatis不能插入,查询中文的问题以及可能的解决办法,以及Mysql数据库编码的设置
- Android layer type与WebView白屏以及WebView不随动画而动的问题
- Android studio关于含有转义字符的字符串无法Log,以及如何去掉转义字符问题
- [Java面试七]Mybatis总结以及在面试中的一些问题.
- 如何创建CocoaPods以及存在的问题
- 新数据中心如何解决数据的灾备以及安全问题
- 【Maven+SSM】如何通过Mybatis写一个中文查询请求及所遇到的问题
- mybatis 使用 parameterType="Map" 传入值后 数据库中得到的却是 NULL
- Mybatis 的Log4j日志输出问题 - 以及有关日志的所有问题
- 集成三方地图时如何获取SHA1值,以及keytool异常问题解决方法
- getSqlSession().selectOne( , )出错问题以及mybatis的xml加载问题
- MyBatis中传入参数parameterType类型详解
- 如何快速学习使用mybatis以及总结
- 如何上传本地代码到github以及相关问题的解决方案