Mybatis框架基於註解的方式,實對資料現增刪改查
阿新 • • 發佈:2018-12-16
編寫Mybatis程式碼,與spring不一樣,不需要匯入外掛,只需匯入架包即可;
在lib下 匯入mybatis架包:mybatis-3.1.1.jar mysql驅動架包:mysql-connector-java-5.1.6-bin.jar
在src目錄下建立xml配置檔案: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:開發模式 work:工作模式 default="development",id="development",兩個的屬性值必須一致 --> <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="lxn123"/> </dataSource> </environment> </environments> <!-- 在配置檔案中 關聯包下的 介面類--> <mappers> <mapper class="com.atguigu.mybatis.test3.UserMapper"/> </mappers> </configuration>
這是基於註解的方式,所以建立一個介面,在定義的方法上配置上應有的註解,註解中含有sql語句,需要提示的是這個介面不需要類去實現它
package com.atguigu.mybatis.test3; import java.util.List; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import com.atguigu.mybatis.test.User; public interface UserMapper { /* * 這是基於註解的對映方式,實現對資料的增刪改查,將sql語句直接寫在註解的括號中 * 這是一個介面,其不需要類去實現它 * 下邊分別是插入,刪除,修改,查詢一個記錄,查詢所有的記錄 * */ @Insert("insert into users(name,age) values(#{name},#{age})") public void insertT(User user); @Delete("delete from users where id=#{id}") public void deleteById(int id); @Update("update users set name=#{name},age=#{age} where id=#{id}") public void updateT(User user); @Select("select * from users where id=#{id}") public User getUser(int id); @Select("select * from users") public List<User> getAllUsers(); }
封裝列:User,這兒只寫屬性,getter和setter,tostring就不寫了
private int id;
private String name;
private int age;
建立MybatisUtils類,有一個方法,載入mybatis和構建sqlSession
package com.atguigu.mybatis.test; import java.io.InputStream; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MybatisUtils { public static SqlSessionFactory getFactory(){ String resource="conf.xml"; //載入mybatis 的配置檔案(它也載入關聯的對映檔案) InputStream is=MybatisUtils.class.getClassLoader().getResourceAsStream(resource); //構建sqlSession 的工廠 SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is); return factory; } }
實現增刪改查的方法
package com.atguigu.mybatis.test3;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import com.atguigu.mybatis.test.MybatisUtils;
import com.atguigu.mybatis.test.User;
public class UserMapperTest {
@Test
//插入資料
public void testInsert(){
SqlSessionFactory factory=MybatisUtils.getFactory();
SqlSession session=factory.openSession(true);
//使用反射的方法
UserMapper mapper=session.getMapper(UserMapper.class);
mapper.insertT(new User(-1, "p", 4));
session.close();
}
@Test
//刪除資料
public void testDelete(){
SqlSessionFactory factory=MybatisUtils.getFactory();
SqlSession session=factory.openSession(true);
UserMapper mapper=session.getMapper(UserMapper.class);
mapper.deleteById(1);
session.close();
}
@Test
//修改資料
public void testUpdate(){
SqlSessionFactory factory=MybatisUtils.getFactory();
SqlSession session=factory.openSession(true);
UserMapper mapper=session.getMapper(UserMapper.class);
mapper.updateT(new User(2, "jjjjj", 232));
session.close();
}
@Test
//獲取一條資料
public void testGetUser(){
SqlSessionFactory factory=MybatisUtils.getFactory();
SqlSession session=factory.openSession(true);
UserMapper mapper=session.getMapper(UserMapper.class);
User user=mapper.getUser(2);
session.close();
System.out.println(user);
}
@Test
//獲取所有資料
public void testGetAllUsers(){
SqlSessionFactory factory=MybatisUtils.getFactory();
SqlSession session=factory.openSession(true);
UserMapper mapper=session.getMapper(UserMapper.class);
List<User> users=mapper.getAllUsers();
session.close();
System.out.println(users);
}
}