什么是 MyBatis ?
MyBatis 是一款优秀的持久层框架,支持普通查询,存储过程和高级映射,和JDBC相比,Mybatis消除了几乎所有JDBC代码和手工参数设置以及结果集的检索。
Mybatis实例:
项目结构:
1.新建maven项目,导入相应的依赖
2.创建Mybatis-config.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://127.0.0.1:3306/test"/> <property name="username" value="root"/> <property name="password" value="password"/> </dataSource> </environment> </environments> <!-- 加入映射文件信息 --> <mappers> <mapper resource="com/entity/User.xml"/> </mappers> </configuration>
3.新建实体类User,添加set和get方法和有参无参的构造方法(篇幅问题我就不把所有的贴出来了)
4.创建sql映射文件 (User.xml)
<?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"> <mapper namespace="com.dao.UserDao"> <!--根据id得到user对象--> <select id="getUserId" parameterType="int" resultType="com.entity.User"> SELECT * from user WHERE uid=#{uid} </select> <!-- 查询user的所有记录--> <select id="getAllUser" resultType="com.entity.User"> select * from user </select> <!-- 删除--> <delete id="delUser" parameterType="int" > delete from user where uid=#{uid} </delete> <!-- 添加--> <insert id="addUser" useGeneratedKeys="true" keyProperty="id"> insert into user (uname,upwd) values (#{uname},#{upwd}) </insert> <!-- 修改--> <update id="updateUser" parameterType="com.entity.User"> update user set uname=#{uname},upwd=#{upwd} where uid = #{uid} </update> </mapper>
5.编写接口方法
public interface UserDao { public User getUserId(int uid); public List<User> getAllUser(); public void delUser(int uid); public void addUser(User user); public void updateUser(User user); }
6.完善pom.xml,让resource可以扫描xml映射文件
<build> <finalName>MyBatis01</finalName> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </build>
7.测试
//删除 @Test public void testMybatis01(){ //读取映射文件 //获取sqlsessionfactory对象 try { SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("Mybatis-config.xml")); //通过Sqlsessionfactory拿到sqlsession SqlSession sqlSession= sqlSessionFactory.openSession(); // User user= sqlSession.selectOne("User.getUsreId",11); // System.out.println(user); UserDao2 userDao2= sqlSession.getMapper(UserDao2.class); userDao2.delUser(17); sqlSession.commit(); sqlSession.close(); } catch (IOException e) { e.printStackTrace(); } } //查询 @Test public void qeryUser() throws IOException { //读取映射文件 //获取sqlsessionfactory对象 //通过sqlsessionfactory拿到sqlsession SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("Mybatis-config.xml")); SqlSession sqlSession=sqlSessionFactory.openSession(); UserDao2 userDao2= sqlSession.getMapper(UserDao2.class); List<User> li=userDao2.getAllUser(); for (User user : li) { System.out.println(user); } } //添加 @Test public void adduser() throws IOException { //读取映射文件 //获取sqlsessionfactory对象 //通过sqlsessionfactory拿到sqlsession SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("Mybatis-config.xml")); SqlSession sqlSession= sqlSessionFactory.openSession(); UserDao2 userDao2= sqlSession.getMapper(UserDao2.class); User user=new User(); user.setUname("用户名2"); user.setUpwd("密码2"); userDao2.addUser(user); sqlSession.commit(); sqlSession.close(); } //修改 @Test public void updateUser() throws IOException { //读取映射文件 //获取sqlsessionfactory对象 //通过sqlsessionfactory拿到sqlsession SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("Mybatis-config.xml")); SqlSession sqlSession= sqlSessionFactory.openSession(); UserDao2 userDao2= sqlSession.getMapper(UserDao2.class); User user=new User(14,"修改用户名","修改密码"); userDao2.updateUser(user); sqlSession.commit(); sqlSession.close(); }