1. JDBC: 面向数据的,SQL直接写在代码中,不方便使用维护,但效率高安全性好
try(PreparedStatement psts = connection.prepareStatement("SELECT F01 FROM S71.T7101 WHERE F02 = ?)")){
psts.setInt(1, 111);
try(ResultSet resultSet = psts.executeQuery()){
if(resultSet.next()){
}
}
}
2. iBatis: 面向对象的,对JDBC的轻量级封装。优点:灵活写SQL,自动映射PO对象,适合于大数据、多表联查和复杂的数据库操作
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE sqlMap
- PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
- "http://ibatis.apache.org/dtd/sql-map-2.dtd">
- <sqlMap>
- <!-- Use type aliases to avoid typing the full classname every time. -->
- <typeAlias alias="User" type="com.app.model.User"/>
- <!-- Select with no parameters using the result map for Account class. -->
- <select id="selectAllUsers" resultClass="User">
- select * from t_user
- </select>
- <select id="selectUser" resultClass="User" parameterClass="int">
- select * from t_user where id=#id#
- </select>
- <insert id="insertUser" parameterClass="User">
- insert into t_user values (
- null,#username#,#password#
- )
- </insert>
- <update id="updateUser" parameterClass="User">
- update t_user set username = #username#,password=#password#
- where id=#id#
- </update>
- <delete id="deleteUser" parameterClass="int">
- delete from t_user where id=#id#
- </delete>
- </sqlMap>
3. Hibernate: 面向对象的,对JDBC的重量级封装。优点:有缓存,使用方便快捷,不用写SQL 缺点:封装太多,性能不好,SQL不能优化
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping>
- <class name="Customer" table="customer">
- <id name="id" column="CID">
- <generator class="increment" />
- </id>
- <property name="username"
- column="username" />
- <property name="password"
- column="password" />
- </class>
- </hibernate-mapping>