MyBatis的xml文件中處理特殊字符 方法一: <<小於號 > >大於號 &&和 '’單引號 ""雙引號 方法二: 用<![CDATA[ ]]>進行說明 <![CDATA[ when min(starttime)<='12:00' and max(endtime)<='12:00']]> ORM: 對象關係映射(Object Relational Mapping,簡稱ORM,或O/RM,或O/R mapping),是一種程序技術. 用於實現面向對象編程語言裏不一樣類型系統的數據之間的轉換 。從效果上說,它實際上是建立了一個可在編程語言裏使用的--「虛擬對象數據庫」。 使用反射能夠作到,但有如下考慮: 零基礎的人能懂嗎? 它寫的代碼能支持全部數據庫嗎? 對對象中的對象可以自動去填充嗎? java中經常使用的ORM框架有哪些? hibernate:全自動的框架(不懂數據庫的人也能操做) Mybatis:半自動的框架(懂數據庫的人 才能操做) 必需要本身寫sql JPA:JPA全稱Java Persistence API、JPA經過JDK 5.0註解或XML描述對象-關係表的映射關係,是Java自帶的框架 如何來學習ORM框架 看官方文檔:http://www.mybatis.org/mybatis-3/zh/getting-started.html 看博客園 Mybatis框架:支持定製化 SQL、存儲過程以及高級映射的優秀的持久層框架。 MyBatis 避免了 1)、JDBC 代碼 (鏈接數據庫,關閉數據庫,打開PreparedStatement) 2)、手動設置參數 (prep.setString........) 3)、手動獲取結果集(while(rst.next()){ ..填充值到對象中 }) 調用方法: SqlSession session = MyBtaisUtil.openSession(); MajorMapper majorMapper = session.getMapper(MajorMapper.class); int result = majorMapper.insert(major); mybatis中設定映射關係 N:1多對一 <association property="java中的變量名" javaType="JAVA實體類型"> <id property="id" column="數據庫表的主鍵"/> <result property="username" column="author_username"/> </association> 1:N 一對多 <collection property="posts" ofType="Post"> <id property="id" column="post_id"/> </collection> resultMap constructor - 類在實例化時,用來注入結果到構造方法中 idArg - ID 參數;標記結果做爲 ID 能夠幫助提升總體效能 arg - 注入到構造方法的一個普通結果 id – 一個 ID 結果;標記結果做爲 ID 能夠幫助提升總體效能 result – 注入到字段或 JavaBean 屬性的普通結果 association – 一個複雜的類型關聯;許多結果將包成這種類型 嵌入結果映射 – 結果映射自身的關聯,或者參考一個 collection – 複雜類型的集 嵌入結果映射 – 結果映射自身的集,或者參考一個 discriminator – 使用結果值來決定使用哪一個結果映射 case – 基於某些值的結果映射 嵌入結果映射 – 這種情形結果也映射它自己,所以能夠包含不少相 同的元素,或者它能夠參照一個外部的結果映射。 注意 <select 查詢單表 resultType=」」> <select 鏈接查詢 resultMap=」自定義返回結果」> 控制檯輸出sql的log4j.properties文件配置: log4j.rootLogger=DEBUG, Console #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n log4j.logger.java.sql.ResultSet=INFO log4j.logger.org.apache=INFO log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG MyBatis.properties配置: <?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.wisezone.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.wisezone.dao"/> </mappers> </configuration> MyBatisUtil.java內容: public class MyBtaisUtil { private static SqlSessionFactory sessionFactory=null; //二級緩存,用它來產生SqlSession( 打開數據庫,建立 PreparedStatement) static{ //一、加載mybatis-config.xml文件 InputStream in=MyBtaisUtil.class.getResourceAsStream("/mybatis-config.xml"); //二、生成sessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(in); } public static SqlSession openSession(){ return sessionFactory.openSession(); } public static SqlSession openSession(boolean autoCommit){ return sessionFactory.openSession(autoCommit); } } MarjorMapper.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.wisezone.dao.MajorMapper"> <insert id="insert" parameterType="com.wisezone.entity.Major" useGeneratedKeys="true" keyProperty="majorId" flushCache="true"> insert into major (majorName) values (#{majorName}) </insert> <!-- 更新 --> <update id="update" parameterType="com.wisezone.entity.Major"> update major set majorName=#{majorName} where majorId=#{majorId} </update> <!-- 簡單的查詢 --> <select id="findById" parameterType="int" resultType="com.wisezone.entity.Major"> select * from major where majorId=#{majorId} </select> <!-- 根據條件查詢 --> <select id="find" resultType="com.wisezone.entity.Major"> select * from major <where> <if test="majorName!=null"> and majorName like #{majorName} </if> </where> </select> </mapper>