Mybatis的CRUD操作
一、编写实体类和dao接口
二、主配置文件SqlMapConfig.xml
<!--Mybatis的主配置文件--> <configuration> <!-- 数据库的连接信息 --> <properties resource="jdbcConfig.properties"></properties> <!-- 使用typeAliases配置别名,它只能配置domain中类的别名--> <typeAliases> <!--用于指定别名配置的包,当指定后,该包下的类会注册别名,并且类名就是别名,不区分大小写--> <package name="com.li.domain"/> </typeAliases> <!-- 配置环境--> <environments default="mysql"> <!-- 配置mysql环境--> <environment id="mysql"> <!-- 配置与事务相关的--> <transactionManager type="JDBC"></transactionManager> <!-- 配置连接池--> <dataSource type="POOLED"> <!-- 配置4个数据库的连接信息--> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <!-- 配置映射文件--> <mappers> <!--package标签是用于指定dao接口所在的包,当指定之后就保护需要写Mapper或resource或者class--> <package name="com.li.dao"/> </mappers> </configuration>
//jdbcConfig.properties配置文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mbase
jdbc.username=root
jdbc.password=123
三、编写IUSerDao.xml配置文件
注意:此配置文件位置要和dao接口包名一致
<mapper namespace="com.li.dao.IUserDao"> <!--查询所有 resultType:返回值类型分装的结果集--> <select id="findAll" resultType="user"> select * from user </select> <!--保存用户 parameterType:参数类型--> <insert id="saveUser" parameterType="user"> <!--配置插入操作后,获取插入操作的id keyProperty:id的属性名称对应实体类 keyColumn:数据库中id列名 resultType:返回值类型 order:什么时候执行这个,之后还是之前--> <selectKey keyProperty="id" keyColumn="id" resultType="integer" order="AFTER"> </selectKey> insert into user(username,address,sex,birthday) values (#{username},#{address},#{sex},#{birthday}); </insert> <!--更新用户--> <update id="updateUser" parameterType="user"> update user set username=#{username},address=#{address} where id =#{id}; </update> <!--删除用户--> <delete id="deleteUser" parameterType="integer"> delete from user where id=#{id}; </delete> <!--通过id查询--> <select id="findById" resultType="user" parameterType="integer"> select * from user where id=#{id}; </select> <!--模糊查询用户信息--> <select id="findByName" resultType="user" parameterType="String"> select * from user where username like #{username} </select> <!--查询用户总数--> <select id="findCount" resultType="integer"> select count(id)from user; </select> <!--根据QueryVo查询用户--> <select id="findByQueryVo" parameterType="QueryVo" resultType="user"> select * from user where username like #{user.username} </select> </mapper>
四、编写测试类
private InputStream in = null; private SqlSessionFactory factory = null; private SqlSession sqlSession = null; private IUserDao userDao = null; //主方法执行之前执行 @Before public void init() throws IOException { //1.获取配置文件 in = Resources.getResourceAsStream("SqlMapConfig.xml"); //2.创建SplSessionFactory工厂 factory = new SqlSessionFactoryBuilder().build(in); //3.生产Sqlsession对象 sqlSession = factory.openSession(); //4.创建代理dao对象 userDao = sqlSession.getMapper(IUserDao.class); } //主方法执行之后执行 @After public void destory() throws IOException { //提交事务 sqlSession.commit(); //关闭资源 sqlSession.close(); in.close(); } /** * 查询所有 */ @Test public void findAllTest(){ List<User> userList= userDao.findAll(); userList.forEach(user -> System.out.println(user)); }