![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MyBatis
FixedStarHaHa
这个作者很懒,什么都没留下…
展开
-
(一)Hibernate与Mybatis区别
Hibernate:是SQL编写等操作,均由框架完成。这样,出现的问题是常常自动生成的SQL并不是最优的,还有数据库和hibernate是全映射(存就存一个对象,取就取一个对象),所以若要克服以上的缺点,就要学习HQL。--全自动化所以,我们希望:SQL语句交给我们开发人员编写,希望SQL不失去灵活性---MyBatisSQL与Java编码分离;SQL是开发人员控制的;只要掌握好S...转载 2019-04-09 17:02:36 · 145 阅读 · 0 评论 -
(十六)mapper (待续)
一、使用MyBatis的mapper接口调用时有哪些要求?① Mapper接口方法名和mapper.xml中定义的每个sql的id相同;② Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同;③ Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同;④ Mappe...原创 2019-05-28 17:09:13 · 220 阅读 · 0 评论 -
(十五)insert
如何获取自动生成的主键值?insert 方法总是返回一个int值 ,这个值代表的是插入的行数。如果采用自增长策略,自动生成的键值在 insert 方法执行完后可以被设置到传入的参数对象中。public int addTeacher(teacher tea); 这样能够将数据插入到表中,只是不能获取到键值<insert id="addTeacher" parameterTy...原创 2019-05-28 14:53:15 · 462 阅读 · 0 评论 -
(十四)动态SQL之bind。sql标签
一、bindbind元素可以从 OGNL 表达式中创建一个变量并将其绑定到上下文。比如:以下是三种写模糊查询的方式:调用:stuOperation.selectUser1("%t%");<select id="selectUser1" resultType="teacher" > select * from `tb_Teacher`wher...原创 2019-05-28 11:35:46 · 3048 阅读 · 0 评论 -
(十三)动态SQL之choose、when、otherwise
类似于java中的switch,多选一 <select id="selectTeacher" parameterType="teacher" resultType="teacher"> select * from tb_Teacher <where> <ch...原创 2019-05-28 11:16:56 · 2481 阅读 · 0 评论 -
(十二)动态SQL之if、trim
Q:mybatis动态SQL有什么用?执行原理?有哪些动态SQL?mybatis动态SQL可以在xml映射文件内,以标签的形式编写动态SQL,执行原理是根据表达式的值完成逻辑判断并动态拼接SQL的功能mybatis提供了9种动态SQL标签:trim、where、set、foreach、if、choose、when、otherwise一、if<!-- test:...原创 2019-05-28 11:14:35 · 438 阅读 · 0 评论 -
(十一)bean中包含其他bean集合--collection
public class teacher2 { private Integer id; private String name; private int dep_id;}public class department { private Integer id; private String name; private ArrayList&...原创 2019-05-27 20:09:51 · 554 阅读 · 0 评论 -
(十)bean中包含其他bean,select 用法--association
场景:将数据库取出数据封装成一个bean一、处理bean中property与column不一致情况(基本数据类型)public teacher selectTeacherByID2(int id);<resultMap type="teacher" id="myTea"> <id column="id" property="id" /> ...原创 2019-05-27 19:34:12 · 792 阅读 · 0 评论 -
(九)获取参数#{}、${}区别
<!-- #{}:可以获取map中的值或者pojo对象属性的值 ${}:可以获取map中的值或者pojo对象属性的值 区别:#:是以预编译的形式,将参数设置到sql中 preparedstatement $:取出的值直接拼接在sql语句中,会有安全问题 大多数情况,用# --> <...原创 2019-05-27 17:26:22 · 351 阅读 · 0 评论 -
(八)参数处理parameter之传入集合 foreach
foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach标签的属性主要有item,index,collection,open,separator,close。item 表示集合中每一个元素进行迭代时的别名,随便起的变量名; index 指定一个名字,用于表示在迭代过程中,每次迭代到的位置,不常用; open 表示该语句以什么开始,常用“(”; s...原创 2019-05-27 17:13:04 · 562 阅读 · 0 评论 -
(七)参数处理parameter或在mapper中如何传递多个参数
一、多个参数public int selectUser1(String name,int age); <!-- 多个参数会封装成map key:param1 ....,paramn或者参数的索引也可以 value:传入的参数值 #{}就是从map中获取指定的key值 --> <select id="selectUser1...原创 2019-05-27 16:50:55 · 813 阅读 · 0 评论 -
(六)select 中返回数据类型:pojo、单条记录读取到map、多条记录读取到map
一、读取到一个list中 public ArrayList<teacher> SelectUsers(@Param("name")String name); <!-- 模糊查询,获取多条记录,封装成list,但是result类型为里面元素的类型 --> <select id="SelectUsers" param...原创 2019-05-27 16:28:00 · 215 阅读 · 0 评论 -
(五)XML配置: typeAlias、databaseIdProvider、settings
一、typeAlias默认是将最底层的类名作为简短名,若仍不满意,可以在自定义bean上@Alias("stu")方式,其自定义别名 <typeAliases> <package name="com.bean"></package> </typeAliases>@Alias("tea")public cl...原创 2019-05-27 15:34:39 · 208 阅读 · 0 评论 -
(四)处理数据库与bean属性不一致情况
比如数据库的表结构:bean结构:在不修改表、bean结构基础上对映射文件进行修改即可(重命名)一、在SQL中设置别名stuCountry stu_country <mapper namespace="test.studentMapper"> <select id="selectUserByID" parameterType="...原创 2019-05-20 13:13:43 · 844 阅读 · 0 评论 -
(三)以接口的方式编程(常用)
前面一章,已经搭建好了eclipse,mybatis,mysql的环境,并且实现了一个简单的查询。请注意,这种方式是用SqlSession实例来直接执行已映射的SQL语句:session.selectOne("com.yihaomen.mybatis.models.UserMapper.selectUserByID", 1)其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返...转载 2019-04-09 19:33:25 · 332 阅读 · 0 评论 -
(二)开发环境搭建(传统方式)
orm工具的基本思想无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.2. 由sessionfactory 产生 session3. 在session 中完成对数据的增删改查和事务提交等.4. 在用完之后关闭session 。5. 在java 对象和 数据库之间有做mappin...转载 2019-04-09 19:11:01 · 162 阅读 · 0 评论 -
(十七)mybatis接口绑定?有哪些是实现方式
接口绑定,就是在MyBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定, 我们直接调用接口方法就可以,这样比起原来了SqlSession提供的方法我们可以有更加灵活的选择和设置。 student user = (student) session.selectOne("test.studentMapper.selectUserByID", 1);接口绑定有两种实现方式:...原创 2019-05-28 17:16:21 · 4559 阅读 · 0 评论