笔记之_Java整理MyBaties单用

mybatis中#和$绑定参数:
#{}将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #{id},如果传入的值是111,那么解析成sql时的值为order by “111”, 如果传入的值是id,则解析成的sql为order by “id”。
    ${}将传入的数据直接显示生成在sql中。如:order by
${id},如果传入的值是111,那么解析成sql时的值为order by 111, 如果传入的值是id,则解析成的sql为order by id。
    #方式能够很大程度防止sql注入。
    $方式无法防止Sql注入。
    $方式一般用于传入数据库对象,例如传入表名.
    一般能用#的就别用$.
mybaties-config.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>
    <!-- 读取数据加配置文件   jdbc.properties -->
    <properties resource="jdbc.properties"/>
     <settings>
       <!-- 在控制台打印sql语句 -->
        <setting name="logImpl" value="LOG4J"/>
     </settings>
     <!-- 对实体类可以少写完整路径 -->
     <typeAliases>
        <package name="com.xxxxx.entity"/>
     </typeAliases>
    <!-- 配置环境变量,里面可以配置N个数据库 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>
    <!-- 让mybaits来管理你所定义的所有自定义的文件  -->
    <mappers>
        <!-- 搜索 java接口 -->
         <package name="com.xxxxx.dao"/>
    </mappers>
</configuration>

Mapper.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 namespace="com.xxxxxxx.dao.MajorMapper">
        <insert id="insert" parameterType="com.xxxxxxx.entity.Major"
          useGeneratedKeys="true" keyProperty="majorId"
         flushCache="true">
           insert into major (majorName) values (#{majorName})
      </insert>
       <!-- 更新 -->
      <update id="update" parameterType="com.xxxxxxx.entity.Major">
          update major set majorName=#{majorName}
          where majorId=#{majorId}
      </update>
      <!-- 简单的查询  -->
      <select id="findById" parameterType="int" resultType="com.xxxxxxx.entity.Major">
          select * from major where majorId=#{majorId}
      </select>
       <!-- 根据条件查询  -->
       <select id="find" resultType="com.xxxxxxx.entity.Major">
          select * from major
          <where>
               <if test="majorName!=null">
                  and  majorName like #{majorName}
               </if>
          </where>
       </select>
</mapper>

MyBatiesUtil.java写法:
public class MyBtaisUtil {
    private static SqlSessionFactory  sessionFactory=null;
    static{
        InputStream in=MyBtaisUtil.class.getResourceAsStream("/mybatis-config.xml");
        sessionFactory=new SqlSessionFactoryBuilder().build(in);
    }
    public static SqlSession openSession(){
        return  sessionFactory.openSession();
    }
    public static SqlSession openSession(boolean autoCommit){
        return sessionFactory.openSession(autoCommit);
    }
}
使用Mybaties:
public class MajorServiceImpl implements MajorService {
    @Override
    public boolean insert(Major obj) {
        SqlSession session = MyBtaisUtil.openSession();
        MajorMapper mapper = session.getMapper(MajorMapper.class);
        try {
            mapper.insert(obj);
            session.commit();
            return true;
        } catch (Exception e) {
            session.rollback();
            e.printStackTrace();
        } finally {
            session.close();
        }
        return false;
    }
}
时间: 2024-08-02 22:09:40

笔记之_Java整理MyBaties单用的相关文章

笔记之_java整理hibernate

页面调试数据: <%@taglib uri="/struts-tags" prefix="s" %> <s:debug></s:debug> Js清除缓存 使用hibernate延迟加载时,并且数据库有关联关系,转换成json对象时不能直接转换,要用new JSONObject(),然后put()方法存值 国外框架项目地址:http://websystique.com/springmvc/spring-mvc-4-angularj

笔记之_Java整理Spring MVC

springMVC原理讲解地址:http://www.cnblogs.com/dragonfei/p/6148625.html Ionic2和angularjs2和angularjs和nosql菜鸟教程一起是做手机的 https://www.bilibili.com/video/av8614724/index_10.html是ionic2公开课地址 FreeCMS DeDeCMS风信网,数据库表结构 DEDECMS简单建站 Filter和Interceptor的区别 Filter是基于函数回调的

笔记之_java整理JavaScript

1.javascript 面向对象这一块 1). javascript的基本数据类型有哪些? Number (数字) 1 1.2 String (字符串) '' "" Boolean 布尔 true false Undefined 未定义 Null 空 2).javascript的引用数据类型有哪些? Object {}. 函数 function . 数组 [] 2.javascript定义对象,动态扩冲里面的变量或者属性 var a =new Object(); //实例化一个对象

笔记之_java整理设计模式

设计模式分类: 创建型:new方法,实例化 结构型:类的结合,套用 行为型:方法的操作 必须掌握的设计模式:工厂.模板.单例.命令.适配器.代理 接口先定义,后实现 抽象类与接口: 光用继承会导致,父类一改变,子类就不得不改变,代码可复用 光用接口子类必须要重写父类所有方法,代码不能复用 反射机制: 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制

笔记之_Java整理jquery

$.extend扩展 Jquery的bin绑定事件,unbind取消所有事件 http://jquery.cuishifeng.cn/ Jquery学习地址:http://www.runoob.com/jquery/jquery-plugin-validate.html Jquery学习地址:http://www.haorooms.com/post/jquery_selecter_zj 使用ajax的jsonP跨域请求数据,需要在服务器对数据进行处理 ajax跨域请求会传过来一个参数如callb

笔记之_java整理ORM框架

MyBatis的xml文件中处理特殊字符 方法一: <<小于号 > >大于号 &&和 &apos;'单引号 ""双引号 方法二: 用<![CDATA[ ]]>进行说明 <![CDATA[ when min(starttime)<='12:00' and max(endtime)<='12:00']]> ORM: 对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或

笔记之_Java整理IO流

线程重复执行: ScheduledExecutorService exec = Executors.newScheduledThreadPool(1); exec.scheduleAtFixedRate(线程名, 1, 1, TimeUnit.SECONDS); 字符输出流writer写完后要执行flush()方法,不然内容不存在 IO流:实时交互 Socket网络交互 多线程和socket合为一体 所有软件几乎都会有多线程,所有跟网络有关的必须要使用socket 大多数的程序只能循环运行单独的

笔记之_java整理html5

查看手机唯一标识:http://html5plus.org/doc/zh_cn/device.html#plus.device.uuid html和html5的区别? html5+css3也逐渐的成为新一代web前端技术,最要用处在开发手机网站. 文档网站:http://www.w3school.com.cn/html5/index.asp HTML5的新功能 (1).强大的绘图功能 (2).新增音频/视频标签 (3).浏览器离线存储 (4).通过浏览器进行定位 外网连接局域网的项目:花生壳?内

笔记之_java整理框架

This依赖于对象,static依赖于类 字符串的模糊查询: instr(empName,?)>0 empName like '%白%' Create view 表名 as 多表连接 视图是临时表 多表连接语句生成,查询工具点开 <T,K>泛型可以用多个 ResultSetMetaData取得列名集合,rst.getMetaData Reflect反射,Field[] 实例化对象方法: New student(); Student.class.newInstance(); Class.f