CRUD例子
CRUD例子(XML配置)
建库+建表语句
create database mybatisdemo; use mybatisdemo; CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT); INSERT INTO users(NAME, age) VALUES('Tom', 12); INSERT INTO users(NAME, age) VALUES('Jack', 11);
添加Mybatis配置文件mybatisconfig
<?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://localhost:3306/mybatisdemo" /> <property name="username" value="root" /> <property name="password" value="123456" /> </dataSource> </environment> </environments> </configuration>
定义实体类
package org.demo.domain; public class Users { private int id; private String NAME; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getNAME() { return NAME; } public void setNAME(String nAME) { NAME = nAME; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
定义MAP映射文件usersMapper
<?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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的 --> <mapper namespace="org.demo.mapper.usersMapper"> <select id="getUsers" parameterType="int" resultType="Users"> select * from users where id=#{id} </select> <insert id="setUsers" parameterType="org.demo.domain.Users"> insert into users(NAME,age) values(#{NAME},#{age}) </insert> <update id="modifyUsers" parameterType="org.demo.domain.Users"> update users set NAME=#{NAME},age=#{age} where id=#{id} </update> <delete id="delUsers" parameterType="org.demo.domain.Users"> delete from users where id=#{id} </delete> </mapper>
在config中添加MAP文件映射
<?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://localhost:3306/mybatisdemo" /> <property name="username" value="root" /> <property name="password" value="123456" /> </dataSource> </environment> </environments> <mappers> <mapper resource="org/demo/mapper/usersMapper.xml"/> </mappers> </configuration>
JUNIT测试类
package mybatisDemo; import static org.junit.Assert.*; import java.io.InputStream; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.demo.domain.Users; import org.junit.Test; public class Demo1Test { @Test public void test() { String resource="MybatisConfig.xml"; InputStream input=Demo1Test.class.getClassLoader().getResourceAsStream(resource); SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(input); SqlSession session=sessionFactory.openSession(); //根据ID查询数据 String statement="org.demo.mapper.usersMapper.getUsers"; Users user=session.selectOne(statement, 1); System.out.println(user); //修改数据 user.setNAME("JSON"); statement="org.demo.mapper.usersMapper.modifyUsers"; System.out.println("修改条数:"+session.update(statement, user)); //新增数据 Users user1=new Users(); user1.setNAME("Bird"); user1.setAge(27); statement="org.demo.mapper.usersMapper.setUsers"; System.out.println("新增条数:"+session.insert(statement, user1)); session.commit(); session.close(); }
CRUD(注解方式)
编写MAP接口
package org.demo.zjdemo; import java.util.List; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import org.demo.domain.Users; public interface UsersMapper { @Insert("insert into users(NAME,age) values(#{NAME},#{age})") int setUsers(Users user); @Update("update users set NAME=#{NAME},age=#{age} where id=#{id}") int modifyUsers(Users user); @Select("select * from users") List<Users> findAll(); @Select(" select * from users where id=#{id}") Users findByid(int id); }
不需要UserMapper接口去编写具体的实现类代码,这个具体的实现类由MyBatis帮我们动态构建出来,我们只需要直接拿来使用即可。
在config文件中注册接口
<mapper class="org.demo.zjdemo.UsersMapper"/>//直接指定接口
也可使用
<package name=” org.demo.zjdemo”/>