Mybatis注解开发的CRUD操作
- 之前都是介绍的使用读取接口类的相关的xml文件之后实现数据库的相关操作。今天介绍的使用mybatis的注解开发进行相应的开发操作。
- 首先写完相应的bean类之后,编写相关的DAO类,然后在函数上进行添加注释,并类似于xml文件中添加搜索语句。
public interface UserDao { /** * 查询所有用户 */ @Select("select * from user") List<User> findAll(); @Insert("insert into user(username,address,sex,birthday) values (#{username},#{address},#{sex},#{birthday})") void SaveUser(User user); @Update("update user set username=#{username},address=#{address},sex=#{sex},birthday=#{birthday} where id=#{id}") void UpdateUser(User user); @Delete("delete from user where id=#{uid}") void DeleteUser(Integer integer); @Select("select * from user where id=#{uid}") User findById(Integer integer); }
- 然后将config文件等全部配置完成。
<?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="mysql"> <!-- 配置mysql环境 --> <environment id="mysql"> <!-- 配置事务的类型 --> <transactionManager type="JDBC"></transactionManager> <!-- 配置数据源(连接池) --> <dataSource type="POOLED"> <!-- 四个基本信息 --> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://cdb-rlerhd0g.cd.tencentcdb.com:10078/User"/> <property name="username" value="root"/> <property name="password" value="Just123456"/> </dataSource> </environment> </environments> <!-- 指定映射配置文件的位置,映射配置文件指的是dao的每个对应的配置文件 如果使用的是注解来配置的话,mapper的属性就应该使用class的相应全类名来实现配置 --> <mappers> <mapper class="com.mybatis.dao.UserDao"/> </mappers> </configuration>
- 测试用例
public class Mybatis_test { private InputStream in; private SqlSession session; private UserDao userDao; private SqlSessionFactory factory; @Before public void init() throws Exception{ //1.读取配置文件 in= Resources.getResourceAsStream("SqlMapConfig.xml"); //2.创建SqlSessionFactory工厂 SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder(); factory=builder.build(in); //3.使用工厂生产Session对象 session=factory.openSession(); //4.使用SqlSession对象创建代理对象 userDao=session.getMapper(UserDao.class); } @After public void destroy() throws Exception{ //6.释放资源 session.close(); in.close(); } @Test public void TestfindAll(){ //5.使用代理方法执行查询所有的方法 List<User> users=userDao.findAll(); for(User user:users){ System.out.println("------------------------"); System.out.println(user); } } @Test public void TestSaveUser(){ User user=new User(); user.setAddress("江苏无锡"); user.setUsername("L"); user.setSex("男"); user.setBirthday(new Date()); //5.使用代理方法执行增加数据的方法 userDao.SaveUser(user); session.commit(); } @Test public void TestUpdateUser(){ User user=new User(); user.setId(50); user.setAddress("江苏惠山"); user.setUsername("LJH"); user.setSex("男"); user.setBirthday(new Date()); //5.使用代理方法执行更新数据的方法 userDao.UpdateUser(user); session.commit(); } @Test public void TestDeleteUser(){ //5.使用代理方法执行删除数据的方法 userDao.DeleteUser(48); session.commit(); } @Test public void TestFindOne(){ //5.使用代理方法执行用ID号查询的方法 User user=userDao.findById(49); System.out.println(user); } }