0、注意してください
- すべての追加、削除、および変更をトランザクションに送信する必要があります。送信しないと、記述されたSQLステートメントが有効になりません。
- 追加、削除、および変更には、xmlに対応するタグがあり、それらを選択タグとして使用しないでください(ただし、誤って間違ったタグを使用しているため、実行できるようです。対応するタグを使用することをお勧めします)
- #{}を使用してSQLステートメントの値を取得します
- 注意してください
1、挿入(挿入)
最初に、以前に定義されたuserDaoインターフェースでメソッドを定義し、パラメーターとしてユーザーオブジェクトを挿入します
//插入一个用户
void insertUser(User user);
次に、バインドされたuserMapper.xmlファイルにこのメソッドを「実装」し、SQLステートメントを記述し、ここでのパラメータータイプがUserであることに注意してください。
<insert id="insertUser" parameterType="com.wt.pojo.User">
<!--若传入的参数是个对象,获取对象中的属性值直接通过#{属性名}就能得到-->
insert into mybatis.user(id,name,pwd) values (#{id},#{name},#{pwd});
</insert>
最後にテストする
@Test
public void insertTest00(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
mapper.insertUser(new User(4,"Jeny","222222"));
//注意,在进行增删改操作时必须要用到事务,如果这里不提交,那么代码运行没有问题但表并没有被增删改,需要提交事务后才能实现增删改
sqlSession.commit();
sqlSession.close();
}
2.更新
インターフェイスでメソッドを定義する
//修改一个用户
void updateUser(User user);
バインドされたマッパー構成ファイルを介してこのメソッドを「実現」します
<update id="updateUser" parameterType="com.wt.pojo.User">
<!--一样,对象中的属性值用#{}取-->
update mybatis.user set pwd=#{pwd} where id=#{id};
</update>
再テスト
@Test
public void updateTest00(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
mapper.updateUser(new User(3,"Joe","123123"));
sqlSession.commit();
sqlSession.close();
}
3.削除(削除)
インターフェイスでメソッドを定義する
//删除一个用户
void deleteUser(int id);
バインドされたマッパー構成ファイルを介してこのメソッドを「実現」します
<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id = #{id};
</delete>
再テスト
@Test
public void deleteTest00(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
mapper.deleteUser(3);
sqlSession.commit();
sqlSession.close();
}
4.クエリ(選択)
IDに基づいてユーザーにクエリを実行
し、インターフェースでメソッドを定義します
//根据id查询用户
User getUserById(int id);
バインドされたマッパー構成ファイルを介してこのメソッドを「実現」します
<!--传入参数,要设置parameterType-->
<select id="getUserById" parameterType="int" resultType="com.wt.pojo.User">
<!--获取传入的参数用取值符号#{形参名}-->
select * from mybatis.user where id=#{id};
</select>
再テスト
@Test
public void selectTest01(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
//传入参数
User userById = mapper.getUserById(2);
System.out.println(userById.getId());
System.out.println(userById.getName());
sqlSession.close();
}
ファジークエリ:
//模糊查询
List<User> getUsers(String value);
次の文字列の接続に注意してください
<select id="getUsers" parameterType="String" resultType="com.wt.pojo.User">
<!--注意这里的字符串拼接-->
select * from mybatis.user where name like "%"#{value}"%";
</select>
@Test
public void selectTest02(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
List<User> users = mapper.getUsers("T");
for(User user:users){
System.out.println(user.getName());
}
sqlSession.close();
}
5.あとがき
着信パラメータに関しては、オブジェクト全体を渡さずにパラメータを自由に渡すことができる、使用可能なマップ(汎用マップ)があります。これは後で書かれます。追加、削除、変更、チェックはアノテーションを使用して実装することもできます。コードをより簡潔にすることはできますが、複雑なSQLステートメントには適していません。個人的には、構成ファイルを使用することを好みます。