mybatis基礎搭建,完成一對一,一對多的對映配置
阿新 • • 發佈:2019-01-04
專案結構截個圖:
1.首先建立一個java專案,新增mybatis的jar包(mybatis-3.4.5.jar)以及連結資料庫的jar包(mysql-connector-java-5.1.44-bin.jar)
2.先建立一個mybatis的配置檔案,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>
<typeAliases>
<!-- <typeAlias alias="user" type="com.test.po.User" /> -->
<!-- 掃描包裡面所有的POJO,推薦此方法,生成的別名是類名 -->
<package name="com.test.po" />
</typeAliases>
<!-- 對事務的管理和連線池的配置 -->
<environments default="development">
<!-- 可以寫多個環境,切換的時候,替換上面的default -->
<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/demo_mybatis1" />
<property name="username" value="root" />
<property name="password" value="" />
</dataSource>
</environment>
<environment id="development2">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/demo_mybatis1" />
<property name="username" value="root" />
<property name="password" value="" />
</dataSource>
</environment>
</environments>
<!-- mapping 檔案路徑配置 -->
<mappers>
<!-- <mapper resource="com/test/mapper/UserMapper.xml" />-->
<!-- 掃描包裡面所有的配置檔案,推薦此方法 -->
<package name="com.test.mapper" />
</mappers>
</configuration>
3.建立SqlSessionFactoryUtil工具類(寫的比較簡單)
package com.test.util; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class SqlSessionFactoryUtil { private static SqlSessionFactory factory=null; public static void initSqlSessionFactory() { try { String resource="mybatis-config.xml"; InputStream is=Resources.getResourceAsStream(resource); factory=new SqlSessionFactoryBuilder().build(is); }catch(Exception e) { e.printStackTrace(); } } public static SqlSession getSqlSession(){ SqlSession session=null; if(factory==null) { initSqlSessionFactory(); } session=factory.openSession(); return session; } }
4.建立User和Address實體類
package com.test.po;
import java.util.List;
public class Address {
private int id;
private String sheng;
private String shi;
private String qu;
private List<User> users;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getSheng() {
return sheng;
}
public void setSheng(String sheng) {
this.sheng = sheng;
}
public String getShi() {
return shi;
}
public void setShi(String shi) {
this.shi = shi;
}
public String getQu() {
return qu;
}
public void setQu(String qu) {
this.qu = qu;
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
}
package com.test.po;
public class User {
private int id;
private String name;
private int age;
private String sex;
private Address address;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
5.建立user和Address的Mapper和對映檔案
UserMapper
package com.test.mapper;
import java.util.List;
import com.test.po.User;
public interface UserMapper {
public User getUser(Long id);
public Integer addUser(User user);
public Integer deleteUser(Integer id);
public Integer updateUser(User user);
public List<User> getAllUser();
public User getUserWithAddress(long id);
public User getUserByAddressId(Integer addressId);
}
userMapper.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.test.mapper.UserMapper">
<resultMap type="user" id="userResult">
<id property="id" column="id" />
<result property="name" column="name" />
<result property="age" column="age" />
<result property="sex" column="sex" />
<association property="address" column="addressId" select="com.test.mapper.AddressMapper.getAddress" />
</resultMap>
<select id="getUser" parameterType="long" resultType="user">
select * from t_user where id=#{id}
</select>
<insert id="addUser" parameterType="User">
insert into t_user (name,age,sex) values(#{name},#{age},#{sex})
</insert>
<delete id="deleteUser" parameterType="int">
delete from t_user where id=#{id}
</delete>
<update id="updateUser" parameterType="user">
update t_user set name=#{name},age=#{age} where id = #{id}
</update>
<select id="getAllUser" resultMap="userResult">
select * from t_user
</select>
<select id="getUserWithAddress" resultMap="userResult">
select * from t_user where id=#{id}
</select>
<select id="getUserByAddressId" resultMap="userResult">
select * from t_user where addressId=#{addressId}
</select>
</mapper>
AddressMapper
package com.test.mapper;
import com.test.po.Address;
public interface AddressMapper {
public Address getAddress(Long id);
}
addressMapper.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.test.mapper.AddressMapper">
<resultMap type="address" id="addressResult">
<id property="id" column="id" />
<result property="sheng" column="sheng" />
<result property="shi" column="shi" />
<result property="qu" column="qu" />
<collection property="users" column="id" select="com.test.mapper.UserMapper.getUserByAddressId" />
</resultMap>
<select id="getAddress" parameterType="long" resultMap="addressResult">
select * from t_address where id=#{id}
</select>
</mapper>
6.最後是件測試類,測試效果
package com.test.main;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.test.mapper.AddressMapper;
import com.test.mapper.UserMapper;
import com.test.po.Address;
import com.test.po.User;
import com.test.util.SqlSessionFactoryUtil;
public class Test {
public static void main(String[] args) {
getAddress(3l);
//getUserWithAddress(1l);
//getAllUser();
//getUserById(1l);
//updateUser(1l);
//deleteUser(4);
}
public static void addUser() {
SqlSession session=null;
try {
session=SqlSessionFactoryUtil.getSqlSession();
UserMapper userMapper=session.getMapper(UserMapper.class);
User user=new User();
user.setAge(20);
user.setName("aaa");
user.setSex("男");
int result=userMapper.addUser(user);
session.commit();
if(result>0){
System.out.println("新增成功!");
}
}catch (Exception e) {
e.printStackTrace();
}finally {
session.close();
}
}
public static void getUserById(long id) {
SqlSession session=null;
try {
session=SqlSessionFactoryUtil.getSqlSession();
UserMapper userMapper=session.getMapper(UserMapper.class);
User user=userMapper.getUser(id);
session.commit();
System.out.println(user.getId()+":"+user.getName());
}catch (Exception e) {
e.printStackTrace();
}finally {
session.close();
}
}
public static void deleteUser(int id) {
SqlSession session=null;
try {
session=SqlSessionFactoryUtil.getSqlSession();
UserMapper userMapper=session.getMapper(UserMapper.class);
int result=userMapper.deleteUser(id);
session.commit();
if(result>0){
System.out.println("刪除成功!");
}
}catch (Exception e) {
e.printStackTrace();
}finally {
session.close();
}
}
public static void updateUser(long id) {
SqlSession session=null;
try {
session=SqlSessionFactoryUtil.getSqlSession();
UserMapper userMapper=session.getMapper(UserMapper.class);
User user=userMapper.getUser(id);
user.setName("芳華");
user.setAge(22);
int result=userMapper.updateUser(user);
session.commit();
if(result>0){
System.out.println("修改成功!");
}
}catch (Exception e) {
e.printStackTrace();
}finally {
session.close();
}
}
public static void getAllUser() {
SqlSession session=null;
try {
session=SqlSessionFactoryUtil.getSqlSession();
UserMapper userMapper=session.getMapper(UserMapper.class);
List<User> list=userMapper.getAllUser();
session.commit();
for(User u:list) {
System.out.println(u.getId()+":"+u.getName());
}
}catch (Exception e) {
e.printStackTrace();
}finally {
session.close();
}
}
public static void getUserWithAddress(long id) {
SqlSession session=null;
try {
session=SqlSessionFactoryUtil.getSqlSession();
UserMapper userMapper=session.getMapper(UserMapper.class);
User user=userMapper.getUserWithAddress(id);
session.commit();
System.out.println(user.getId()+":"+user.getName()+","+user.getAddress().getSheng()+"-"+user.getAddress().getShi()+"-"+user.getAddress().getQu());
}catch (Exception e) {
e.printStackTrace();
}finally {
session.close();
}
}
public static void getAddress(long id) {
SqlSession session=null;
try {
session=SqlSessionFactoryUtil.getSqlSession();
AddressMapper addressMapper=session.getMapper(AddressMapper.class);
Address address=addressMapper.getAddress(id);
session.commit();
String str="";
for(User u:address.getUsers()) {
str+=u.getId()+"-"+u.getName()+";";
}
System.out.println(address.getSheng()+address.getShi()+address.getQu()+"的人:"+str);
}catch (Exception e) {
e.printStackTrace();
}finally {
session.close();
}
}
}