Mybatis
1.はじめに
Mybatisは、通常のSQLクエリ、ストアドプロシージャ、高度なマッピングをサポートする優れた持久层
フレームワークです。Mybatisは、jdbcコードとパラメーターのほとんどすべての手動設定、および結果セットの取得とパッケージ化を排除します。Mybatisは、構成と元のマッピングに単純なxmlまたは注釈を使用できます。インターフェイスのpojo(プレーンオールドJavaオブジェクト、エンティティクラス、通常のJavaオブジェクト)をデータベース内のレコードにマップします。
永続層:Javaオブジェクトをデータベースに保存するプロセスは、永続層dao層mybatisの半自動フレームワークであり、SQLステートメントを記述する必要があります
JDBC-> dbutils-> MyBatis-> Hibernate
2、mybatisクイックスタート
Mybatisに基づいたテスト例を作成します(追加、削除、変更、チェック)。
- ステップ:
-
1.mybatis.jarパッケージをインポートします
【mybatis】 mybatis-3.1.1.jar 【MYSQL 驱动包】 mysql-connector-java-5.1.7-bin.jar
-
2.mybatis構成ファイルmybatis-conf.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> <environments default="development"> <environment id="development"> <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="root" /> </dataSource> </environment> </environments> </configuration>
-
3.テーブルに対応するエンティティクラスを定義します
public class User { private int id; private String name; private int age; }
-
4.ユーザーテーブルを操作するためのSQLマッピングファイルUserMapper.xmlを定義します
<mapper namespace="dong"> <!-- resultType:实体类的全局路径 --> <select id="getUser" parameterType="int" resultType="com.hong.entity.User"> select * from users where id=#{id} </select> <insert id="insertUser" > insert into users(name,age) values(#{name},#{age}) </insert> <delete id="deleteUser"> delete from users where id=#{id} </delete> <update id="updateUser"> update users set name=#{name } where id=#{id} </update>
-
5.mybatis-conf.xmlファイルにuserMapper.xmlを登録します
<mappers> <!--映射文件的路径--> <mapper resource="mapper/UserMapper"></mapper> </mappers>
-
6.テストコードを記述します。定義されたselectステートメントを実行します
//1. 读取配置文件 Reader reader = Resources.getResourceAsReader("mybatis-config"); //2. 构建Session工厂 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); //3. 创建能执行映射文件中的sql的sqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); //4.执行sql //查询 /*User user = sqlSession.selectOne("dong.getUser", 1); System.out.println(user);*/ //新增 /*int insert = sqlSession.insert("dong.insertUser", new User(4, "丁丁", 18)); //事务提交 sqlSession.commit(); System.out.println("a!!!!!!!!!!");*/ //删除 /*int delete = sqlSession.delete("dong.deleteUser", 4); sqlSession.commit(); System.out.println("a~~~~~~~~~~`");*/ //修改 int jhon = sqlSession.update("dong.updateUser", new User(2, "Jhon", 11)); sqlSession.commit(); System.out.println("a~~~~~~~~~~~~~~``");
-
3つ目は、ユーザーテーブルのクラッドを操作する
3.1XMLの実装
- SQLマッピングxmlファイルを定義します。
<insert id="insertUser" parameterType="com.hong.entity.User">
insert into user(name, age) values(#{name}, #{age});
</insert>
<delete id="deleteUser" parameterType="int">
delete from user where id=#{id}
</delete>
<update id="updateUser" parameterType="com.hong.entity.User">
update user set name=#{name},age=#{age} where id=#{id}
</update>
<select id="getOneUser" parameterType="int" resultType="com.hong.entity.User">
select * from user where id=#{id}
</select>
<select id="getAllUser" resultType="com.hong.entity.User">
select * from user
</select>
- このマッピングファイルをmybatis-config.xmlに登録します
<mappers>
<mapper resource="com/hong/mybatis_test/test1/UserMapper.xml"/>
</mappers>
第四に、実際の開発モデル
インターフェイスは、マッピングファイルと組み合わせて使用されます
1.インターフェースを作成します
public interface UserDao {
/**
* 查询所有的用户信息
*/
public List<User> getAllUser();
/**
* 根据id查询用户信息
*/
//@Param:表示把该参数的名称作为映射文件的参数名
public Users getByNameAndAge(int id);
}
インターフェイスに書き込むメソッドを記述します
2.マッピングファイルを作成します
<?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">
<!--映射文件中 namespace必须和接口的全路径匹配-->
<mapper namespace="com.hong.dao.UserDao">
<!--
id 名称必须和接口中的方法名一致
查询语句中的resultType必须写
-->
<select id="getAllUser" resultType="com.hong.entity.User">
select * from users
</select>
<select id="getByNameAndAge" resultType="com.hong.entity.User">
select * from users where id=#{id}
</select>
</mapper>